{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "\n",
    "## PS1-1 Linear Classifiers (logistic regression and GDA)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### (a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Recall the average empirical loss for logistic regression:\n",
    "\n",
    "$$\n",
    "J(\\theta) = - \\frac{1}{m} \\sum_{i = 1}^{m} y^{(i)} \\log \\big( h_\\theta (x^{(i)}) \\big) + (1 - y^{(i)}) \\log \\big( 1 - h_\\theta (x^{(i)}) \\big)\n",
    "$$,\n",
    "\n",
    "where $y^{(i)} \\in \\{ 0, 1 \\}, h_\\theta (x) = g(\\theta^T x)$ and $g(z) = 1 / (1 + e^{-z})$.\n",
    "\n",
    "Compute the gradient of $J(\\theta)$:\n",
    "\n",
    "\\begin{align*}\n",
    "\\nabla_\\theta J(\\theta) & = - \\frac{1}{m} \\sum_{i = 1}^{m} y^{(i)} \\frac{1}{h_\\theta (x^{(i)})} h_\\theta (x^{(i)}) \\big( 1 - h_\\theta (x^{(i)}) \\big) - (1 - y^{(i)}) \\frac{1}{1 - h_\\theta (x^{(i)})} h_\\theta (x^{(i)}) \\big( 1 - h_\\theta (x^{(i)}) \\big) \\\\\n",
    "                        & = - \\frac{1}{m} \\sum_{i = 1}^{m} \\big( y^{(i)} - h_\\theta (x^{(i)}) \\big) x^{(i)}\n",
    "\\end{align*}\n",
    "\n",
    "Then, the Hessian of $J(\\theta)$ is:\n",
    "\n",
    "$$H = \\nabla_\\theta^2 J(\\theta) = \\frac{1}{m} \\sum_{i = 1}^{m}  h_\\theta (x^{(i)}) \\big( 1 - h_\\theta (x^{(i)}) \\big) x^{(i)} (x^{(i)})^T$$\n",
    "\n",
    "And for any $z \\in \\mathbb{R}^n$:\n",
    "\n",
    "\\begin{align*}\n",
    "z^T H z & = \\sum_{j = 1}^{n} \\sum_{k = 1}^{n} H_{jk} z_j z_k \\\\\n",
    "        & = \\sum_{j = 1}^{n} \\sum_{k = 1}^{n} \\frac{1}{m} \\sum_{i = 1}^{m}  h_\\theta (x^{(i)}) \\big( 1 - h_\\theta (x^{(i)}) \\big) x_j^{(i)} x_k^{(i)} z_j z_k \\\\\n",
    "        & = \\frac{1}{m} \\sum_{i = 1}^{m}  h_\\theta (x^{(i)}) \\big( 1 - h_\\theta (x^{(i)}) \\big) \\sum_{j = 1}^{n} \\sum_{k = 1}^{n} z_j x_j^{(i)} x_k^{(i)} z_k \\\\\n",
    "        & = \\frac{1}{m} \\sum_{i = 1}^{m}  h_\\theta (x^{(i)}) \\big( 1 - h_\\theta (x^{(i)}) \\big) \\big( (x^{(i)})^T z \\big)^2 \\\\\n",
    "        & \\geq 0\n",
    "\\end{align*}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### (b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import problem_set_1.src.util as util\n",
    "\n",
    "from problem_set_1.src.linear_model import LinearModel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [],
   "source": [
    "ds1_training_set_path = 'data/ds1_train.csv'\n",
    "ds1_valid_set_path = 'data/ds1_valid.csv'\n",
    "ds2_training_set_path = 'data/ds2_train.csv'\n",
    "ds2_valid_set_path = 'data/ds2_valid.csv'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [],
   "source": [
    "x_train, y_train = util.load_dataset(ds1_training_set_path, add_intercept=True)\n",
    "x_valid, y_valid = util.load_dataset(ds1_valid_set_path, add_intercept=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Take a look at the training set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1a9deac8670>]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5hklEQVR4nO2dfXxU9Z3v39+ZJJCAUAnYWjWJW622yloVrLUPt2lkKygq7MrSO0Su231FQ3erda23lBdY4aYURFfuvhZqrtVFyC7FiogCtYrZW/e2q4BP1FpX1ARRWxE1yGOefveP35yZM5M585Q585B8369XXpNz5pwz3wz6+/x+36efGGNQFEVRFIBAoQ1QFEVRigcVBUVRFCWCioKiKIoSQUVBURRFiaCioCiKokQoK7QBg2H8+PGmrq6u0GYoiqKUFLt27XrfGDMh0XslLQp1dXXs3Lmz0GYoiqKUFCLS6fWeuo8URVGUCCoKiqIoSgQVBUVRFCWCioKiKIoSQUVBURRFiaCioCiKkoDly6G9PfZce7s9P5RRUVAURUnA5Mkwa1ZUGNrb7fHkyYW1y29Kuk5BURTFL+rrYcMGKwTNzbB6tT2ury+0Zf6iKwVFURQP6uutICxZYl+HuiCAioKiKIon7e12hbBwoX2NjzEMRVQUFEXJO22726i7u47A7QHq7q6jbXdboU0agBND2LABFi+OupKGujCoKCiKklfadrfR9GgTnV2dGAydXZ00PdpUdMKwY0dsDMGJMezYUVi7/EZKeY/mSZMmGW2IpyilRd3ddXR2DezHVju2lo6bOvJv0DBERHYZYyYlek9XCoqi5JW9XXszOq/kFxUFRVHySs3YmozOK/lFRUFRlIwYbJC4paGFqvKqmHNV5VW0NLTk0kwlS1QUFEVJm1wEiUMTQ7ROb6V2bC2CUDu2ltbprYQmhny0XEkXDTQripI2GiQeGmigWVGUnKBB4qGPioKiKGmjQeKhj4qCoihpo0HioY+KgqIoaaNB4qGPBpoVRVGGGRpoVhRFUdJCRUFRFEWJoKKgKIqiRFBRUBRFUSKoKCiKoigRVBQURVGUCCoKiqIoSgQVBUVRFCWCr6IgIt8TkZdF5Hci8m8iMlJExonIEyLyWvj1RNf180Vkj4i8KiLf9NM2RVEUZSC+iYKInAJ8F5hkjDkXCAKzgR8A240xZwLbw8eIyOfD758DXAasEpGgX/YpiqIoA/HbfVQGVIpIGVAFvANcBawJv78GuDr8+1XAemPMcWPMm8Ae4CKf7VMURVFc+CYKxpi3gRXAXuBdoMsY8yvgk8aYd8PXvAucFL7lFOAt1yP2hc8piqIoecJP99GJ2Nn/6cCngVEiMifZLQnODejWJyJNIrJTRHbu378/N8YqiqIogL/uo0uBN40x+40xPcBG4BLgTyJyMkD49b3w9fuA01z3n4p1N8VgjGk1xkwyxkyaMGGCj+YriqIMP/wUhb3AxSJSJSICNACvAJuBueFr5gKPhH/fDMwWkREicjpwJvCsj/YpiqIocZT59WBjzDMi8gvgOaAXeB5oBUYDG0Tk21jhuCZ8/csisgH4ffj67xhj+vyyT1EURRmIbrKjKIoyzNBNdhRFUZS0UFFQFCWvtO1uo+7uOgK3B6i7u4623W2FNklx4VtMQVEUJZ623W00PdrEkZ4jAHR2ddL0aBMAoYmhQpqmhNGVgqIoeWPB9gURQXA40nOEBdsXFMgiJR4VBUVR8sberr0pzy9fDu3tse+3t9vziv+oKCiKkjdqxtakPD95MsyaFRWG9nZ7PHlyPixUVBQURckbLQ0tVJVXxZyrKq+ipaElclxfDxs2WCFYtMi+bthgzyv+o6KgKEreCE0M0Tq9ldqxtQhC7dhaWqe3Dggy19dDczMsWWJfVRDyhxavKYpSdDguo+ZmWL1aVwq5RovXFEUpGRxB2LABFi+OupLig8+KP6goKIpSVOzYEbsycGIMO3YU1q7hgrqPFEVRhhnqPlIURVHSQkVBURRFiaCioCgutFmbMtzRhniKEkabtSmKrhQUJYI2a1MUFQVFiZBOs7Zco+4qpdhQUVCUMOk0a8sljruqs6sTg4m4q1QYlEKioqAoYdJp1pZL1F2lK6ViREVBUcKk26wtVxTCXVVM6EqpONGKZkUpEHV319HZ1TngfO3YWjpu6si/QXlmuP/9hUQrmhWlCMm3uyqfpOMWGu4rpWJFRUFRCkS+3VX5Il23UL4D+0p6qPtIUZSckq5bKL5YEOxKaSgIY7Gj7iNFUfJGum6hobpSKnW0zYWiKDmlZmxNwpVCIrdQaGJIRaDI0JWCoig5ZSgH0IcDKgqKouQUdQuVNhpoVhSl4LTtbmPB9gXs7dpLzdgaWhpaVER8JFmgWWMKiqIUFG1ZXlyo+0hRlIKiPaCKCxUFRVEKilY2FxcqCoqiFBStbC4ufBUFEfmEiPxCRP4gIq+IyJdEZJyIPCEir4VfT3RdP19E9ojIqyLyTT9tUxSlONAU1uLC75XCSuCXxpizgfOAV4AfANuNMWcC28PHiMjngdnAOcBlwCoRCfpsn6IoBUZTWIsL31JSRWQM8CLwZ8b1ISLyKvB1Y8y7InIy8O/GmLNEZD6AMWZp+LrHgR8ZY37r9RmakqooipI5hep99GfAfuB+EXleRO4VkVHAJ40x7wKEX08KX38K8Jbr/n3hczGISJOI7BSRnfv37/fRfEVRlOGHn6JQBlwArDbGnA8cJuwq8kASnBuwjDHGtBpjJhljJk2YMCE3liqKoiiAv6KwD9hnjHkmfPwLrEj8Kew2Ivz6nuv601z3nwq846N9iqIoShy+iYIx5o/AWyJyVvhUA/B7YDMwN3xuLvBI+PfNwGwRGSEipwNnAs/6ZZ+iKIoyEL/bXPw90CYiFcAbwHVYIdogIt8G9gLXABhjXhaRDVjh6AW+Y4zp89k+RVEUxYWvomCMeQFIFOFu8Li+BdDkZEVRlAKhFc2KoihKBBUFRRnCtO1uo+7uOgK3B6i7u4623W2FNkkpcrR1tqIMUbQltZINulJQlCGKtqRWskFFQVGGKEO5JbW6xfxDRUFRhii5aEldjIOv4xbr7OrEYCJusWKwbSigoqAoQ5TBtqQu1sFX3WL+oqKgKEOUwbakLtbBdyi7xYoBzT5SlCFMaGIo60yjYh18a8bW0NnVmfC8Mnh0paAoSkKKdZtM3anNX1QUFEVJSLEOvqWwU9vy5dDeHnuuvd2eL3bUfaQoSkKcQXbB9gXs7dpLzdgaWhpaimLwHYxbLB9MngyzZsGGDVBfbwXBOS52fNuOMx/odpyKohQrjhA0N8Pq1VGBKAYKtR2noijKsKW+3grCkiX2tVgEIRUqCoqiKD7Q3m5XCAsX2tf4GEOxoqKgKIqSY9wxhMWL7eusWaUhDCoKipIFxdj+QSkeduyIjSHU19vjHTsKa1c6aKBZUTIkviU12FTNYkuLLCRtu9uKMmtJsWigWVFySLG2fygWirVnkpIeKgqKkiHF2v6hWFDRLG1UFBQlQ4q1/UOxoKJZ2iQVBREZIyKfSXD+z/0zSVGKm2Jt/1As5FM0NeCfezxFQURmAX8AHhKRl0Vksuvtf/HbMEUpVkqh904hyZdoauzCHzyzj0TkBWCqMeZdEbkIeAD4oTFmo4g8b4w5P492JkSzjxSlOMlH9lHd3XUJW2jXjq2l46aOnH7WUCNZ9lGyhnhBY8y7AMaYZ0WkHnhMRE4FSjePVVEU38lHwzqNXfhDspjCx+54Qlggvg5cBZzjs12KoihJ0YC/PyQThWYgICKfd04YYz4GLgP+1m/DFEVRkqEBf3/wFAVjzIvGmNeADSLyP8VSCdwFzMubhYqiKAnQgL8/pGxzISKjgGXAhcAJQBuwzBjT7795ydFAs6IoSuYMts1FD3AUqARGAm8WgyAoiqJki9Y3eJOOKOzAisJk4CvAt0TkF75apSiK4hNa35CcdETh28aYRcaYHmPMH40xVwGP+G2YoiiKH2hvpuSkFAVjzACnvTFmrT/mKIqi+IvWNyRHG+IpijKs0PqG5PguCiISFJHnReSx8PE4EXlCRF4Lv57ouna+iOwRkVdF5Jt+26YoyvBD6xuSk4+Vwo3AK67jHwDbjTFnAtvDx4SL5GZjq6UvA1aJSDAP9imKMozQ+obk+CoK4T5JlwP3uk5fBawJ/74GuNp1fr0x5rgx5k1gD3CRn/YpSr7QFMjiIjQxRMdNHfTf1k/HTR0qCC78XincDdwKuOsaPulqtPcucFL4/CnAW67r9oXPxSAiTSKyU0R27t+/3xejFSWXaAqkUkr4JgoicgXwnjFmV7q3JDg3oNzaGNNqjJlkjJk0YcKEQdmoKPlAUyCVUsLPlcKXgStFpANYD3xDRNYBfxKRkwHCr++Fr98HnOa6/1TgHR/tU5S8kIsUSL/dT17PV7fX8MM3UTDGzDfGnGqMqcMGkJ8yxswBNgNzw5fNJVoItxmYLSIjROR04EzgWb/sU5R8MdgUSL/dT17Pn7dlnrq9hiGFqFP4CTBFRF4DpoSPMca8DGwAfg/8EviOMaavAPYpSk4ZbAqk3+4nr+e37mpNeH7Oxjm6ahjCJNt5LWcYY/4d+Pfw7weABo/rWgBNFlaGFE5mS7bbU/pdgev1nL4kczJn1QBo5s4QIy+ioCjDncFsT1kztibhXsS5qsD1en5QgkmFwVmtqCgMLbTNhaKkQSEDrn5X4Ho9v+nCpgHn49F+QUMPFQVFSUGqQK/fguF3Ba7X81ddvipy3gvtFzT0UPeRoqQgVaC36dGmyPul6mv3cm855x1hdH8Pma5W2na3ZR1XUfJHyu04ixndjlPJB4HbA5iBdZQI4umPrx1bS8dNHTn5fK8BOd/9egYzqBfL36BYkm3HqaKgKCmou7vOc+Df27XXUzD6bxvcrrXOIJzos53Pz5Xw+E2y77BU/oahxGD3aFaUYU2yQK9fvfndcQwv3EHeYq88Hgob2yxfDu3tsefa2+35oYSKgqKkIFmg16/MoERxjHgc4SmFhntDYWObyZNh1qyoMLS32+PJkwtrV65RUVCUNPBqtexXZlCqGbRbeG7cduOgKp7zscoYChvb1NfDhg1WCBYtsq8bNtjzQwnNPlKUQTKYwjQvvALYYP3wTpC3bXcbB44eSHhdMmFxxysEicRFEmVP5SJraLBV3YlYvtzO0t2Dcns77NgBt96a9WOTUl8Pzc2wZAksXDj0BAE00KwoRUm62TpeAVzwDuImerbXvcWcNeS4b5zZevyxn5/Z3AyrV5fuSkEDzUrRUuwB0kKRrlsq2WrAyzWTTrzCeW4x7wWRb3eOW3QWL45+dnzwudRR95FSMOJnoaVa+OUX6bilvNxM1ZXVnvemk/HjBIDzmTWUjTson+6cHTtiRccRpR07SnO14IWuFJSCUcyz0FLBK4C7cupKz3tSZfy4A8D5zBrKJrunvd26cRYutK9+ztpvvXXg4F9f71/8olCoKCgFYyjkrjsUyg2WTfZTIiGR8G648ffnM2soU3fQcHHn5Bt1HykFw++W0H6TSQaPn7jdTI5NjRsbPTN8MskE8iNrKBmZuIOGizsn32j2kVIwijmzJRWZZPD4bYczYI+rHMfH3R/T3dcdeT/d7zM+7XTamdPY+tpWTyHwq7ndUMnuKXa095FStJRq58xkqaAOueh/lIx0hAlSi1M6zxGEGybdwKrLV/km5oVIMR2uqCgoSo7x6pzqxu+VQjrCBKnFKZPnrJ251rNJ32D/3kIUow1XtE5BUXJMOnGPQ92HfA04pxuQT2Vrus8xmMiqLtlzsg26D5fsnmJHRUEpOKVYwJYoKyeeA0cP+NqYLh1hSidTKJPAvuPm83pOKTTnU5KjoqAUlFIdRJxU0OrK6sg5J63TTbK6i3gxnLdlXkbimEiYygPlVFdWZ9ScLx2Bc3DiPl5pqlp74i/5aN+toqAUlFIfRI72Ho387hVjSORuSSSGq3euzkgcE9Uo3H/1/bx/6/sDurkmI9FzGk5vGCByzsCfrDZiKNWeFCP5aN+tgWaloCTb6tLPzJ1ckG6ANlEAdjD35otsMsOy2WFNA8yZkYu0XQ00K0VLKW++ks7s18unn+7MOf66fMZfvPaQSEY2FdDDZfOaXOEu8Gtuzn26roqCUlBKZfOVRINxKuFK5tNPV/Tc15VC/CWbthvDZfOaXOF3vyd1HykFp9gL2LyKteaeN5ef7vxpQvdXOgVjjRsbk9Y6xBeEpdo7wY/vzU/XTvy/+/kftrBpcYiFC20vI2UguSrwU/eRUtRk46YYLJm4YbyC4Vtf28oNk27wDMgmIzQxlPBer8Z0kNzl5NeqwS/XTqJVz6a+Jq5e1JbV7LcU05qzIVm/p1yhKwVl2JFpm4Zk1cvrZq4Dsm8Yl8kqKZ3gdPwKJRerMD/6ESULSN9/XkdGs99S7qFVKLTNhaK4yDRDJtlgnM/BJ90eRU7WVi4Hy0WLop1Lc+HaSZV1lomLKpuMp0JQTFlW6j5SFBeZ5tInK+7KtqYiG3eHO4jrhTswPZgaELd9n/xJHf/4ZFtOA5upss4yaW9RKrURpZJlpaKgDDsyTYN1BmMv9nbtTWuQd66R24XGjY1Js4i8nufEX9bNXJcya8trUIyfVbs/a/zy8Yz+8WjmbJwTse+94530TG3irGvacraRTS6zzkolrblUsqxUFJRhRzYDUmhiyHOGXlVelTJV1B1YhYHVz+4ZfDqpp+mkfiYbFOdtmZfwsw4cPcDhnsMDrj/eb+3LVWAzm9RVL0olrRm8awzy0b4iXTSmoAxLsgnAtu1u47pN19HT35PWZ7h92unuv7B25lrmPjyXPtOX8JrmSc2sunxVWp/ftruNORvnJHwvKEF6F/WmXVnt2FesVebFntbs4BW0z/deEgUJNIvIacADwKeAfqDVGLNSRMYBPwfqgA5gljHmw/A984FvA33Ad40xjyf7DBUFJV1yNWiMXz6eA0cPpHWtexBNZ/+F6spqjvYeTblpTsPpDez5YE9af4vcPrBJn8O6mes8RSMRQQmyZsaaohxsS4FUA38+d50rVKC5F/gHY8zngIuB74jI54EfANuNMWcC28PHhN+bDZwDXAasEpGgj/Ypw4RcVgJ/cPSDtK8dVzku4q9PJQiO+yOVIABsf3N72n9L0ON/IUEi+0inS5/pK6oK6lKrTbjjDpg/P7bGYP58e9459rN9Rbr4JgrGmHeNMc+Ff/8YeAU4BbgKWBO+bA1wdfj3q4D1xpjjxpg3gT3ARX7Zpwwfbtx2Y846sWYSvPzw6If8zSN/k9I9E5QgrdNbMxIcN8n+lqYLEw/8oypGpSVAiT7r7x5eUHD/dym0/Ijn+9+HpUtjs4+WLrXnnWM/21ekS14CzSJSB5wPPAN80hjzLljhAE4KX3YK8Jbrtn3hc/HPahKRnSKyc//+/b7arZQ+bbvbPN092aQsegU1R5WPGnBtP/1093WnfGa/6Sc0MTSobJnOrs7IbNk9g9762lYaTm+IrBiCEqR5UjOHuwcGkx1GlY9KuDeEw0emk0sfi87QF6xvy3tqZSm2XE+WfeR2JS1eTM6yvLLBd1EQkdHAQ8BNxpiDyS5NcG7AmtsY02qMmWSMmTRhwoRcmakMUZINEtkOwpVllZHfqyuraZ3emtWsO96OloYWygPlWT+ns6uTv3nkb7hu03UxM+jf7vsta2aswdxm6F3Uy6rLVyX927v7ulk7c61ntpUg9I+JPv/Hv2ui6Z/aMnZ3DCbjplRqE+LxchHlo31FuvgqCiJSjhWENmPMxvDpP4nIyeH3TwbeC5/fB5zmuv1U4B0/7VOGPskGiWlnTgPS9007Lgv3ysPZZGcws3zHjtDEEGNGjMn6OWAH9PjsqCM9R5izcU7MSuJQ9yHPZ/T097Bg+4KEqyJBBsZHyo/Q9sfMZ+iDKeYqldqEeLxcRMW0P7VvoiAiAvwMeMUYc5frrc3A3PDvc4FHXOdni8gIETkdOBN41i/7lOFBskFizYtrmLdl3gDf9JyNcxi/fPyAOoO5D8/1dFlksqVlPFtf2xr5jHQzm7LBWUlcu/HalJ+zt2tvwlqCTHaXc/BaETiz42yKuRJuRUoVoU/F1ib4FetI9Dddf7398fr8YnIRJcPPlcKXgUbgGyLyQvhnGvATYIqIvAZMCR9jjHkZ2AD8Hvgl8B1jPJK1FSVNUrWoaN2V2PVz4OgBGjc2Mm/LvMgKwat2oLOrM6GPO12ciuhMsoGqyqti9odOl+6+bvpJXWvgiGl8B1vPFhsHa2IGN/dgmGxFkCzjJpl7KZFgff+sVlr/PpSXNhKJ/qaf/xzWr/de+RSTiygZWrymDHmSFXGlQhDGVY4b9Ay+IljBCRUnJHyOM9B6ZSkJwjdO/8aA2gQg678rGeWBcu6/+v6E9Qhtu9u4bmMTPUQFcESgisBjrVz8JXijztaCyMEafjC5hZbZ9hmpirYS5eZnU9CVz1z/RJ8F+fv8waAN8ZRhTbIWFcmybIBI64fB0t3XTdfxroTvTTtzWlL3i8Hw232/paWhJWbPidDEkOdqwas+IRXVldWeggD2u7x/ZuwM/WdXt/K970H76Kgbrn9MJ3e/EU0RTbQiSOVOyaZXUK5y/dMJgif6rGKpNRgMulJQhgVeLSrKAmUIknbrCj9ItVJwXxffCjpZe2wgZatth+rKat6/9f0MLY+Sqn319dfDmjV2YN+2zQ7u69fDO+/AV78aDagmaiWdSdvuXK0U0lml6EpBUUoYr8ye3v5exowYk5V/Plfs7dqbVqA60WoiWWO5RO81T2qmIlgR84yKYAUrp64Esq8STpYi2t5uBaCsDDZvtlW8V18NbW3w9NOxPv/4jJtMCrpyGciNX6VccUVsNXJ7O8yYATNnRj9rxgz7dxV7IDkVKgrKsMGrYviDox/w/q3v0zypOaU7yQ/GVY7LeK8EiA7gjRsbAVg7c+2A7UzjA8WrLl/FfVfdFyMU9111H6GJoayrhNvbQQ56p4ju2AGbNsGjj4IxdoA/fhz6+uDhh1PHB9IdZN2BXMfN4w7kJstESuQuAjjvPLtK+cu/jK1GXr/e/i2zZ9vj+nr467+2x8UeSE6Fuo+UYUM6O3QNJiidLaMrRlNdWc3err2MqxzHsd5jA9pXx++Y5scWlNnuYLZ8OXTVtHH3G7H2BCjnxMoxfHD0g0hw/P7vhdi+3b7vuIO8dh8bzE5lmQapE10/Y4Yd+G+80a5S5s+3wlDsrqF0UPeRUjAycUf43eDsjHFnJDx/qPtQzCY2+eZQ96Gk+xlUV1Yz97y5LNi+IPLd5LKfk0O2VcK33gots2NdVdWV1ZQFhQNHD0RWHd/e1MSvP7Lfc0UF/O//DXfdBdOnW9eSG3ew2U26BV2ZBqnjr3cEYdOm6Cpl6VKYOrW0g8jpoCsFxTcymc36vfn6vC3zWL1ztef7VeVVzD1vLhte3uBrAVk2pNtS26F2bG1WrcFzudex17PkYC0rTulg8WI4ehR6euCGG+DBB6OulrIyOwC7Z+3Z7mOc6d7SzvUNDbBgQezAf9dd9v2bb9aVgqJkRSZNy7JpcObe3rJscRlyu3iuMFp3eW+n6XzWT3f+tOgEAWwhXSaFcdl2DJ125rQBMZVsdzDzXF2M2cvNN8N3vwvd3XD++VBXF52l/+53cMst0aDuYArQ3EHqO++0g3r8++4Yg/v6F18ceO3SpTYuUspB5HRQUVB8IxN3RLL9hBO5lOK3t3Sqjb0GRK9qZDep9jwoJTJ1JbXtbmPNi2tivgNBmHve3LRWHPGuv3GV4xJeVzO2Jmbw3bs3trJ57VqYM8cOwIPZx9gdIxg9GubOtWLjCMNdd9mMIkdsUgW1S6UaOReUpb5EUbKjZmxNQheCk0Xj3g0tIIGEA7cgkWc4Az4kXlk4OAOiezALSjAtYSg2EjagS5P47z6ZGybR92kwkb5MyYh3/TmfG/+dV5Xb3kTugb6+3g6+8+fHpp46vvuFC7Nz0cQP4nfcYd1UixbBCy/AunWwYkV6XUq94hiO/UMNXSkovpFsQ/X49EcvQfDa4D5V8DP+fa/NZoqdQa1ejLBgvV0xpXLDeK/U9ias7J02LTqL9hLoPtMHR6pj6ifG7g0NGHznz7eDvzNLnz/fDtqNjbnZbMYZ4P/1X2HChOhq5Oabo9cUU5fSQqOioPhGssKqRNkzYGeXqTpydnZ1pmyRHJBAjMtp1eWrGF0xOid/V7GQsqZCDD/ZsYBLL40WVbmLr9z+dK/v86QRNRE3yvXX20yhWbPg0kvt6xVXQOdH3gJ90omjWTtzLQCNGxtZVVHHO+NjXXu9vfDYY9EYwtKldhZ/7rnW5unTU8cD4olvWAdw7Bh0dNgK6m3bhmY8IBeo+0jxDbd7yL3BfLIW0X2mj9qxtUlXAgEJ0NLQkrSFQ3yMAUi621gxkImLK123Uv8Je9m+HaqqbMGVg+PCcVxKLVMTfJ89VfztWS1Uz7crA2NscPjyy22AeP58+Id/AM6sgU8kbtHx3vHOmAZ67n8Px73nno3Hu3HArh4WLrSfGV9z4IU7xbS52YpKd7ddfWzbZm3PNF4xmLqJUkJTUhVfSJRiCkTaSXiJQrqDXXVlNbPOmcXW17bS2dUZGVC9BtbasbUc6j5UlNlFDtWV1WnZl4l4BA7WEtrfwYMPQjBoB/ayMpt/D7EDY9vuNm7esoD3ju3lpJE1/G1dC3ddF6K/H0RsFXJjI2zcaH8fNQquvBLWvtAGMxtBEvy79QchkPjfw53mmmrATdRnaMeO1IO0k2JaXg4/+Yl1GTnPmj/frlLSHdCz6dparGhKquIbXgVnXn7mA0cPJB340vWhHzh6gJ89/zNaGloi20ya2wz9JvFeAZ1dnRw8nmw3WH/IpFvpgaMH0mqzkXbAvKeK2RNa2LYNrrvOzpSPHLH1AfffP3CAe3tbiD/9oIOmd/s5trSD4O+tIHR323qChgZ45BE7kPb2wqFD8NBDULknBDtvABNne3cViNceFHtZvtzO4B1BmDXLHk+bZl/jYyBOy4nm5mg9g9tF5BTCPfSQ/d3JcmpogEDA7ncA0VVEJoLgvm/6dLj22oHfnx+b+RQCFQUla5L1ysnHXrndfd3MfXhuTPqpl288IIG8d0KtHVtL76LepP2M4jGY3PRfMnDuG6386s4Q8+fb5nMVFdEBcu1am+HjnvG+/rr9ffZsO2AuWWJXFiLQ3w8ffWT7FR0/bmfefX1WZP7qr2Dsf6yCjWvho1orDh/V8uUPW6Er8d9+0ogaysqs+6mjIxpwvuUWeOkle95dqzB9OvzHf0Szk5wCN8cNdO219t7Fi20PoltusfGODRusyHR32xoId6V0Ni6f+nrbBC/R9+fHZj6FQN1HStYkq4CF1K2gc4VTjey4kuJdUBXBCrr7uvNiSzzmNuPpSktG7dja8PcnkE0GkgG6ajlrXwvv/iqEiG0+B7aFw7FjdqCcMyfayhqibpWFC+2ADzByJJxzDuzaZV1QgQB86lNw4IAVhu5uOPtsKyq1tfDaazBlCvzmN3DkM22YK5qgIjZWcXWwlfaVIcaMgX37onacfz488YT9jBNOsEVud90Fhw/bFcKqVdFB+Jpr4IEH4IILbLfVxkZ7DFZEtmyBr3zFismKFfbZg/X/O589darNkHJ/f6XkQlL3keILyYrTElXHpkM29xzpOcLqnasjIhTvgurpK9BeCQbGtoyncWMjwf5K5Gh67bkDBGlpaOGprxlGP76Wk0bY7C36M9g4R4BPdPLqZ5s48b+1RQRh1iwrDtu2wRe+EDvjdc/Wzz4bRoyw9/T3w549Vgj6+uDP/9wO5EuW2KKws8+GV16xq4r33rOD9//9v3YgNy+F7IohvIIYeayWq4OtbFocorsbbrrJrmDWrrUi8OST9nNHjrSitGSJFZ3mZrsfw113Re1cs8Z+9tNP26rozZujK4GvftWee/ppKwzu9NNscccQHnjACoL7+xsqqCgoWePlqhlXOW5AdWy6GExG7pZ0n5kLqsqrCEgG/8sIHOy1DeE+7juAqfyAUeWjUt7WTx/XPnQdVy5oY3OL9fP339YPknpv5QFUHKHzMwt4/vmBmT1vvWVn1w89FB1Me3vtYPfcc3ZV0Nho4wmf+5x9r7HRrhimT7fum9dfhzfftIP2+edb19KePXYgDwTs+RPfChH8pw5kcT/HftLBYz8OUVlp33dWKIGAfU4gYAVr7lz7uWBdVddcYwXillusq2jpUpsWu2sXnHGGFaPeXrsKam+3sY8334TTT7crhXnzBu/icX9/7e3WzvjvbyigoqBEyLRLqVdxGpD1JvZOVkpGg28ecGos6usGMyU0HO45TCCN/+36pYe+v7gxpq4g8HHy2gxPPrGXH/7QDl7Os5wZ73XXWRFwAraTJ9sBtarK+u0rK20l8H8ebqPv7+tY95kAJ95ex7a325g6FbZvtzGHa66BZ56xM/QnnoBTTrH33n+/deNcfrldSYAdvL/yFbvqeOYZ+OY3rQCBPff978NPf2pXCw0N1o4ZM6zoOLPzk0+2K4PmZmhttcJhTFS4fvMbuOQS+PhjKx6rV1sbBzOjdwrc4lcMjz02tPogFdf/eUrBmLdlHo0bGzPaYMWrOM1rM5tUVAQrIs3XvLKIck262UHnVU4jNDHEC398YdCfGeivgv7UbrKjHOD666OZOLMntFBO8t3ZEnHSiBpGjoSTTrLPWb8+NoYA1h2zfn34c2bbWfns2Tb99A8VbZT/ZRMfGvvfxoemE6Y38fPft0VWElOm2Bn8k0/a3995xw7Kx47ZQf3JJ6MDfyBgheP4cRur+NWvrIAsXGjfc2IXW7fa+zZtsgP+nXfa2XldHezebT9n1So7UC9aZN1cEybA22/DhRfC//t/VjSeeMJe29GR3t7LqRjqfZA00DyMcYrLkgWEc9k22U2AACIyIL0yIAGuv/D6pG2us8ZATMjCQGVwNEf7D6V17w/PXsePX83BBjzxdiS5ruoOQ3+/ndH/y642eqfcSE/ZgfTuB8pNFWXbWmn8Qoh77rFVyT//uQ3gOvn+zz9vB9VzzrGZO6++agXi7+5pY/V/LeDD/s6En3ei1NK9vIPDh+1g3t8fDfZee62d0Z94Inz4YdiWchuP2LXLHgeDdmUQDNpB+d57bWxCxArJ449HB9677rKisWSJzTByAuVOAHnWrGiQ+qtftc9JtCkODJ1ag8GQLNCsojAMadvdxo3bbkyrUEoQ68/O8PnJsm1SFbABVAQq6O4vTMaQJ73lEOxJe0AeNEeqGfXP73PWWfBcTxtMj8vicf7XddlTJhX0Hj4BKj+gknEcPQJUfcCJgRr+aUYLn34/xKWX2gH8jDOgqwsOHrQunC1b7GDc3Q3mXLs6cCqRE2IEWdzPDTfYAb2317qdFi+G22+3gea+PjvIB8I+CUcE+uLKF0TsauCSS+CD8ELz/fejg/X119vVx3/+Z3Rwnz7d2lpZCaGQdTk52UDXXGOPV6yILVhzC8NQ2EEtWzT7SIngDNjpVvam6jHkhTuLKCABmic1Y24zmNsMK6euTPn5RScIAGU9YAb5v0y6c7A+24Hm8C0BnvtaHVx2Y6wgAAicUFaNHLSZPSeNqOVfZtzHU5e9z8itaznaexRGHQCxLp//8Ysm7n0m6g584w3Yv9+6cTZvhsqL2jjeXIdZFIAZc5MLAkBXDeeeazfIue46G3s4fNjWGBw8aIUH7GDf3x8VgvLyqEhEvhZj4wTPPWfdPO+8Y2f6O3bYVcK6dfDpT8d2V735Zuu6OuMMuzpZscK+Or7+G26wQgUDu542Nw/9HdSyRVcKw4x0XDsOgrB25tq0d/BKtgKpCFZw31X3AXDdpuvyXkiWMxLMzjO+P9m9BjhaTaDqIP30xJ5PdJ8Rmt7tZ/bs2JYQ39hcl7gf0Ue1lP9zR8wgDcDEBCuRZHRXIVtaMS+GuPhi+PGP7ex7xAjr03fcSXV1Nn3VGZxHjAivRMIi8O67sY8tL7cz/9tui25/6bS5dqeVutte3HmnHeDj3/eqSUjUMmO4CYO6j4Y57sZ0maRnjq4YzeHuwzHN7JJ9RqoCrVLoP+Q7KURBumptlo5Hg7kB9AX54efX0DLb/tssXw6//jVsmRRI3IvICNzeHxm0I9xUl95nhoviPtPRwl+cHGJ1OPRz5502FXX1ahg71rqlTjjBZv8k4tRTrVgk4uKL7bM+9zlbZ3DBBdE4BAyuB9FQ6l80GNR9NIyJb0WRDMflU11ZTUWwgkPdh9LOREq26Y3D3q69w1sQIPkqobcC82QLjPVoEZLony/Yx52v2X+b5cut62XrVjgx4OH267Ln++PDRF6f6UJ6qmDjOkb+tINLTrCCUFNj4xB33219+KeeagVh5MiBgiCuv90tCGVxvZrfftuuEJ5+2q449uyJzRgaTPbPUM8cygW6UhjipOsuqq6sZuXUlYQmhjzvCUqQftOfcOUQuD2QUnSqqOYIw1wUvOgHHl5nf796LgQTNJI7XA0jP0r4XsXRWv7i5Q4ef9y6ZfaObUOuasKUuYS6uwoebYXdCVZ8XiuF/iBIP4GPa+h/ooXGL4Soq7PumilToi0p+vujs3/nuLzc+vxHjbKxBoiecwLLTtB5zBgbh4gPQjvdTZcuzX42P1xaXmeCrhSGMcka0wlCdWU11ZXVfHD0AxZsX5C0mV2f6YusHBo3NiK3S6TILZ2A9HEOQvfQ2ugmZzjT6OlNCQd96a2CX66EQOJMsO6Rdoe0M86w+x6zO4R5pDWmQR2PthL8vYcLcHuLFY2Yh1bBw2sILOmn/64OLqwI8eCDsHKlTQ99/nkrDM6qwxGEyko7uPf02LqBY8eij3SqlI2xQhAI2JXCwYM23lBeHr12xAgrCAsX2mwi92w+k9qC+A13hloDu1yjojCEadvd5lkZHJQgN0y6gaO9Rzlw9ECMm8hr03U3zqrAuWfamdMGVDfH00cPVBzKqr/bkKerJnGGEUBfEPNIK2WvhOCIx7/NkXEcPmzz8yPsDsHdHXB7v33dHRqQChpz7aMDRYTdtn32Zz9r/fq9vVa/6uut7//JJ20rCQdjbGvu0aPtAD9jhi0k+9znrFBUVNjrRGwxndNt9YILoumwYK8tK7M1E0uW2Mro11+3711/vX2ue1BPJhLuDXcWLRqeMYRMUFEYojixBK/e+32mj9U7Vw+IAzjHZYH0N+VzGtId7zme3g1ZNv6M0C+lLSzxtndXwavToMrDtRboh92hSAZPNogkPwYSigjYArT/+i97z2WX2YZ669fDU0/Zc2++GZ3hG2N/Dh60s/zZs+1q4Q9/gKYmO9BPmWKv2bPH3rNiBUyaZMXBWXX09dkfZw+Eigr7+6JF9tXt9U5n5q9pqOmjojAESNSzKJ3ArxcHjh6gtz/zEaiPNDd/gexSOvuDLOwzlL94QxY3Fwn9As82D5yRn7XV+zvpcrnmqjxaiHidD+Psi+A+ThenItkY6+5xBlQnLgDw9a/HPvvkk20B2xVX2P5IN9xg6xkee8zWH1RVRWsVzj/fioeziqmrs6/HjsFFF1n30aZNtgp7yRL7umlTZjN/Z8MdZz+GodKnyA+GZaDZa+/gUsOrLqCqvCprQShmArua6e8FLlqdv6ribPBKO00W6L3NK4UU2Lgueo9XQPijWju7d1FREXXHZEJZmZ2xuzOUysvtTPw3v7Ez/eefh898xja0cwLMU6bYfkPHjsUGmhcutO4kZybvrixev972V7r4YpttdOWVtj1GY6O95vhxe399/cDagvZ2KxILF9oqai80DXUgGmh2kWy3sHzakEk30kT3j18+njkb5yRM8TzScySjbSBLAgNl73wZLvpp6uIvnz4/8pP0OoHXG8IrAaAvaF9dPvqEdHkE6o9Ux97jFRDe3jLgVnf8wFkllJV5uI5c9PZav73TwC4YtPf87nc2PvDEEzaY/OyzdhDft8+ef/JJ2/La2Yehp8cO7qtXR7N/3Cmh9fVwzz32uK/Pzvq3bbOD/ObN9nMbGmxge8YMe93ixfZ1xoxowDvVzF/TUDOj6FYKInIZsBIIAvcaY37idW02K4Vku4Vl2vgtGxIVeVWVV9E6vTWt1Uomu3gNpRWDHLR7LJgxKdJrDdBXbltSuM+lWlmkrDS2RV+eM/VwURfbW7wH/mQkqih2rSwCATsw9/WFr21YYGsLumoGfKbbrTNyJFRX29z/KVPsbNydDeQuYrvwQrsCCATs/X19dlDfvNk2mWtvt4Jx0kl2L4bTT7e1CPPn2wH9kkusYIwcGe13FApZ11CqmXl8b6KrryayW9z69fZn06boTP/qq+1z77lHZ/7ZUDIrBREJAv8MTAU+D3xLRD6fy89ItltYPkjk6z/Sc4QF2xdkfX8inDbWTlvr6srqAX38gxKkPFDu8YTiIUAZ8ye3YMak+DcywLPNnPv6/bE++50uH/7havsTP4t/tnngDNxNVw2f+hTeM/WN62KCs8kQSTBbT5L9A9GBu6yMhAFhdy8h59kidne148ejewxMmBDdJ6G8PDp4f/rT0NkJd9xhg8kiNh7wwAN2YH76aSsU559vVwYTJ9oA8yWX2PYSN99sBWHECNsJdcsWePRR6xqC1DNz92x+xw4rAA8/bH+/5x577NzvvH/PPfZYZ/65pahWCiLyJeBHxphvho/nAxhjlia6vhRXCl5FXul2I02rSMxj5ZEolgJE2mfH723sHCdrT1FdWc3oitGD3o85IIGEeyiMDI7k3qvutd09H6ujP9FKIWxy2QvNlD2+iuPHbQfNRx+NbZEQCNhZbE9PNF8e7CDZ24udgV92o80Ccg/aPVWc+0Yrv/u38PeZYqaeCmcm/9nP2qyeRFRVRfdIDgbhk5+0fYIuv9xmA61da/+ek0+O9hq64w6b0fN//k900xmwFc719bax3C23WEF47DG7KnAfg51xz5xpZ+HuWff118NLL9kYgtOHaN4867ppbrZB5PPOiw7Y7s2BhnORWLFSMisF4BTgLdfxvvC5CCLSJCI7RWTn/v37M/4Ar93CnAHSb7yKvNLtRprquurKak9XVGhiiI6b7NaOHTd1EJoYipwztxnWzlwbs2HO2plrMbcZOm7qYOXUlQm/t5VTV9JxUwfrZq5LuOoISpAxZdVghBF91ZwQrI7M2Ef0VSMIn5BafvDZBxj9+LrIfsQnjahl9OPr2Prlo4Qmhtixw24yQ0/cLN0I499sZtQKw7KvreLaa+GLX7T+7RUropW0YAc/9zaPDpHWzrtDcMf7lG1eF+k8yke1NBxp5Y9PhDjttPANHqmb6WKM3btg3z47Gx85MrbVwznnWEH41Kfs8ejRcOON9u/59a+tO2fhQnvfgQPW737CCfbaBx+0m9Zs2WJn7I5/H6zwXX65bS9dX2+PV6ywx0730A0bbAA53g1zzz1WjNyN6VatsoJw7732PmdDHHehWH29CkLJYYwpmh/gGmwcwTluBP7J6/oLL7zQZMO6l9aZ2n+sNfIjMbX/WGvWvbQuq+dk+9lVLVWGHxH5qWqpStuGRPfzI0z1smrf/45U39u6l9aZ6mXVA2xatsyYp56y1zz1lDHjxxvT2GhMVVX0vPsah6eesufd9/33peuMfK/WcJsYbqo1535rnRExprk5eq3zrKeeMmbUKGPuvNP+fsUVTha9MYGAMV/8ojHl5dFzzc3GXHyx/X3UKGOamuy9zjO++EX7Xk1N9NlgnxEI2HvLyuzvzjNF7OuIEfa1osK+TpgQtXHMGPtZF11kn+3YsmyZMZdcYo+dv2HsWHut8/uYMdHnVFXZ67y+Qz9I9e+mFCfATuM1Dnu9UYgf4EvA467j+cB8r+uzFYVCM1hRKqSoDQZnYI8XiPhBJRHO4LNsmR34xo+3r86xW2Di73Efn322/XHONzUZc9pp9tyyZdHnNTXFCtKyZcacdZYdrN3Pu/LKgX/TsmV2gL/4YisYzj3NzdHjqVMT2zh1aqzAGWPtmTo19lq38MXbqSipSCYKxRZTKAP+C2gA3gZ2AP/dGPNyouu1IV5pkavGZKXS4KxU7FSGHyW1n4KITAPuxqak3meM8XT2qygoiqJkTjJRSL/BTZ4wxmwFthbaDkVRlOFIsWUfKYqiKAVERUFRFEWJoKKgKIqiRFBRUBRFUSIUXfZRJojIfmBw/RVyy3jg/UIbkYJit7HY7YPit1HtGzzFbuNg7as1xkxI9EZJi0KxISI7vdK8ioVit7HY7YPit1HtGzzFbqOf9qn7SFEURYmgoqAoiqJEUFHILa2FNiANit3GYrcPit9GtW/wFLuNvtmnMQVFURQlgq4UFEVRlAgqCoqiKEoEFYUcISKXicirIrJHRH5QaHviEZH7ROQ9EfldoW1JhIicJiLtIvKKiLwsIjcW2iY3IjJSRJ4VkRfD9t1eaJsSISJBEXleRB4rtC2JEJEOEdktIi+ISNG1OBaRT4jIL0TkD+H/Fr9UaJvciMhZ4e/O+TkoIjfl9DM0pjB4RCSI3QdiCnYL0R3At4wxvy+oYS5E5GvAIeABY8y5hbYnHhE5GTjZGPOciJwA7AKuLpbvUEQEGGWMOSQi5cB/ADcaY/6zwKbFICI3A5OAMcaYKwptTzwi0gFMMsYUZWGYiKwBnjbG3CsiFUCVMeajApuVkPC48zbwRWNMzop4daWQGy4C9hhj3jDGdAPrgasKbFMMxphfAx8U2g4vjDHvGmOeC//+MfAKcftzF5LwhlWHwofl4Z+imlGJyKnA5cC9hbalFBGRMcDXgJ8BGGO6i1UQwjQAr+dSEEBFIVecArzlOt5HEQ1opYaI1AHnA88U2JQYwq6ZF4D3gCeMMUVlH3ZzqluB/gLbkQwD/EpEdolIU6GNiePPgP3A/WEX3L0iMqrQRiVhNvBvuX6oikJukATnimoWWSqIyGjgIeAmY8zBQtvjxhjTZ4z5AnAqcJGIFI0bTkSuAN4zxuwqtC0p+LIx5gJgKvCdsFuzWCgDLgBWG2POBw4DRRcfBAi7tq4EHsz1s1UUcsM+4DTX8anAOwWypWQJ++ofAtqMMRsLbY8XYZfCvwOXFdaSGL4MXBn22a8HviEi6wpr0kCMMe+EX98DHsa6XouFfcA+1wrwF1iRKEamAs8ZY/6U6werKOSGHcCZInJ6WMFnA5sLbFNJEQ7k/gx4xRhzV6HtiUdEJojIJ8K/VwKXAn8oqFEujDHzjTGnGmPqsP/9PWWMmVNgs2IQkVHhJALCbpm/AIomG84Y80fgLRE5K3yqASiKRIcEfAsfXEdQhHs0lyLGmF4R+TvgcSAI3GeMebnAZsUgIv8GfB0YLyL7gNuMMT8rrFUxfBloBHaH/fYAPwzv2V0MnAysCWd8BIANxpiiTPssYj4JPGz1nzLgX40xvyysSQP4e6AtPLl7A7iuwPYMQESqsJmO1/vyfE1JVRRFURzUfaQoiqJEUFFQFEVRIqgoKIqiKBFUFBRFUZQIKgqKoihKBBUFRfEJEfmliHxUrB1LFSURKgqK4h93YGsvFKVkUFFQlEEiIpNF5KXwngujwvstnGuM2Q58XGj7FCUTtKJZUQaJMWaHiGwG/hdQCawzxhRN+wZFyQQVBUXJDYuxPbCOAd8tsC2KkjXqPlKU3DAOGA2cAIwssC2KkjUqCoqSG1qBhUAbsKzAtihK1qj7SFEGiYhcC/QaY/413EX1NyLyDeB24GxgdLgz7beNMY8X0lZFSYV2SVUURVEiqPtIURRFiaCioCiKokRQUVAURVEiqCgoiqIoEVQUFEVRlAgqCoqiKEoEFQVFURQlwv8HPF0cIABdFGMAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.xlabel('x1')\n",
    "plt.ylabel('x2')\n",
    "plt.plot(x_train[y_train == 1, -2], x_train[y_train == 1, -1], 'bx', linewidth=2)\n",
    "plt.plot(x_train[y_train == 0, -2], x_train[y_train == 0, -1], 'go', linewidth=2)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Implement logistic regression using Newton's Method:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [],
   "source": [
    "class LogisticRegression(LinearModel):\n",
    "    \"\"\"Logistic regression with Newton's Method as the solver.\n",
    "\n",
    "    Example usage:\n",
    "        > clf = LogisticRegression()\n",
    "        > clf.fit(x_train, y_train)\n",
    "        > clf.predict(x_eval)\n",
    "    \"\"\"\n",
    "\n",
    "    def fit(self, x, y):\n",
    "        \"\"\"Run Newton's Method to minimize J(theta) for logistic regression.\n",
    "\n",
    "        :param x: Training example inputs. Shape (m, n).\n",
    "        :param y: Training example labels. Shape (m,).\n",
    "        \"\"\"\n",
    "\n",
    "        def h(theta, x):\n",
    "            \"\"\"Vectorized implementation of h_theta(x) = 1 / (1 + exp(-theta^T x)).\n",
    "\n",
    "            :param theta: Shape (n,).\n",
    "            :param x:     All training examples of shape (m, n).\n",
    "            :return:      The hypothesis for all training examples. Shape (m,).\n",
    "            \"\"\"\n",
    "            return 1 / (1 + np.exp(-np.dot(x, theta)))\n",
    "\n",
    "        def gradient(theta, x, y):\n",
    "            \"\"\"Vectorized implementation of the gradient of J(theta).\n",
    "\n",
    "            :param theta: Shape (n,).\n",
    "            :param x:     All training examples of shape (m, n).\n",
    "            :param y:     All labels of shape (m,).\n",
    "            :return:      The gradient of shape (n,).\n",
    "            \"\"\"\n",
    "            m, _ = x.shape\n",
    "            return -1 / m * np.dot(x.T, (y - h(theta, x)))\n",
    "\n",
    "        def hessian(theta, x):\n",
    "            \"\"\"Vectorized implementation of the Hessian of J(theta).\n",
    "\n",
    "            :param theta: Shape (n,).\n",
    "            :param x:     All training examples of shape (m, n).\n",
    "            :return:      The Hessian of shape (n, n).\n",
    "            \"\"\"\n",
    "            m, _ = x.shape\n",
    "            h_theta_x = np.reshape(h(theta, x), (-1, 1))\n",
    "            return 1 / m * np.dot(x.T, h_theta_x * (1 - h_theta_x) * x)\n",
    "\n",
    "        def next_theta(theta, x, y):\n",
    "            \"\"\"The next theta updated by Newton's Method.\n",
    "\n",
    "            :param theta: Shape (n,).\n",
    "            :return:      The updated theta of shape (n,).\n",
    "            \"\"\"\n",
    "            return theta - np.dot(np.linalg.inv(hessian(theta, x)), gradient(theta, x, y))\n",
    "\n",
    "        m, n = x.shape\n",
    "\n",
    "        # Initialize theta\n",
    "        if self.theta is None:\n",
    "            self.theta = np.zeros(n)\n",
    "\n",
    "        # Update theta using Newton's Method\n",
    "        old_theta = self.theta\n",
    "        new_theta = next_theta(self.theta, x, y)\n",
    "        while np.linalg.norm(new_theta - old_theta, 1) >= self.eps:\n",
    "            old_theta = new_theta\n",
    "            new_theta = next_theta(old_theta, x, y)\n",
    "\n",
    "        self.theta = new_theta\n",
    "\n",
    "    def predict(self, x):\n",
    "        \"\"\"Make a prediction given new inputs x.\n",
    "\n",
    "        :param x: Inputs of shape (m, n).\n",
    "        :return:  Outputs of shape (m,).\n",
    "        \"\"\"\n",
    "\n",
    "        return x @ self.theta >= 0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Train the logistic regression model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [],
   "source": [
    "log_reg = LogisticRegression()\n",
    "log_reg.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Plot decision boundary for training set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Theta is:  [-6.26018491  2.47707251 -0.0299125 ]\n",
      "The accuracy on training set is:  0.8825\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "util.plot(x_train, y_train, theta=log_reg.theta)\n",
    "print(\"Theta is: \", log_reg.theta)\n",
    "print(\"The accuracy on training set is: \", np.mean(log_reg.predict(x_train) == y_train))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Plot decision boundary for validation set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The accuracy on validation set is:  0.9\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "util.plot(x_valid, y_valid, log_reg.theta)\n",
    "print(\"The accuracy on validation set is: \", np.mean(log_reg.predict(x_valid) == y_valid))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### (c)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "\\begin{align*}\n",
    "p(y = 1 \\ \\vert \\ x; \\ \\phi, \\mu_0, \\mu_1, \\Sigma) & = \\frac{p(x\\ \\vert \\ y = 1; \\ \\mu_0, \\mu_1, \\Sigma) \\ p(y = 1; \\ \\phi)}{p(x\\ \\vert \\ y = 1; \\ \\mu_0, \\mu_1, \\Sigma) \\ p(y = 1; \\ \\phi) + p(x\\ \\vert \\ y = 0; \\ \\mu_0, \\mu_1, \\Sigma) \\ p(y = 0; \\ \\phi)} \\\\\n",
    "                                                   & = 1 / (1 + \\frac{p(x\\ \\vert \\ y = 0; \\ \\mu_0, \\mu_1, \\Sigma) \\ p(y = 0; \\ \\phi)}{p(x\\ \\vert \\ y = 1; \\ \\mu_0, \\mu_1, \\Sigma) \\ p(y = 1; \\ \\phi)}) \\\\\n",
    "                                                   & = 1 / (1 + \\exp \\big( \\frac{1}{2} (x - \\mu_1)^T \\Sigma^{-1} (x - \\mu_1) - \\frac{1}{2} (x - \\mu_0)^T \\Sigma^{-1} (x - \\mu_0) \\big) \\frac{1 - \\phi}{\\phi}) \\\\\n",
    "                                                   & = 1 / (1 + \\exp \\big( - \\big( (\\mu_1 - \\mu_0)^T \\Sigma^{-1} x + (\\mu_0^T \\Sigma^{-1} \\mu_0 - \\mu_1^T \\Sigma^{-1} \\mu_1 - \\log \\frac{1 - \\phi}{\\phi}) \\big) \\big) ) \\\\\n",
    "                                                   & = 1 / (1 + \\exp \\big( -(\\theta^T x + \\theta_0) \\big))\n",
    "\\end{align*}\n",
    "\n",
    "where $\\theta = \\Sigma^{-1} (\\mu_1 - \\mu_0)$ and $\\theta_0 = \\mu_0^T \\Sigma^{-1} \\mu_0 - \\mu_1^T \\Sigma^{-1} \\mu_1 - \\log \\frac{1 - \\phi}{\\phi}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### (d)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "To compute $\\phi$, $\\mu_0$ and $\\mu_1$, recall the log-likelihood:\n",
    "\n",
    "\\begin{align*}\n",
    "\\ell(\\phi, \\mu_0, \\mu_1, \\Sigma) & = \\log \\prod_{i = 1}^{m} p(x^{(i)}, y^{(i)}; \\ \\phi, \\mu_0, \\mu_1, \\Sigma) \\\\\n",
    "                                 & = \\log \\prod_{i = 1}^{m} p(x^{(i)} \\ \\vert \\ y^{(i)}; \\ \\mu_0, \\mu_1, \\Sigma) \\ p(y^{(i)}; \\ \\phi) \\\\\n",
    "                                 & = \\log \\prod_{i = 1}^{m} \\big( p(x^{(i)} \\ \\vert \\ y^{(i)} = 1; \\ \\mu_0, \\mu_1, \\Sigma) \\ p(y^{(i)} = 1; \\ \\phi) \\big) ^{1 \\{ y^{(i)} = 1 \\}} \\big( p(x^{(i)} \\ \\vert \\ y^{(i)} = 0; \\ \\mu_0, \\mu_1, \\Sigma) \\ p(y^{(i)} = 0; \\ \\phi) \\big) ^{1 \\{ y^{(i)} = 0 \\}} \\\\\n",
    "                                 & = \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 1 \\} \\big( -\\frac{1}{2} (x^{(i)} - \\mu_1)^T \\Sigma^{-1} (x^{(i)} - \\mu_1) + \\log \\phi \\big) + \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 0 \\} \\big( -\\frac{1}{2} (x^{(i)} - \\mu_0)^T \\Sigma^{-1} (x^{(i)} - \\mu_0) + \\log (1 - \\phi) \\big) + C\n",
    "\\end{align*}\n",
    "\n",
    "where $C$ does not contain $\\phi$, $\\mu_0$ or $\\mu_1$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Take derivative of $\\ell$ w.r.t $\\phi$ and set to 0:\n",
    "\n",
    "\\begin{align*}\n",
    "\\frac{\\partial}{\\partial \\phi} \\ell(\\phi, \\mu_0, \\mu_1, \\Sigma) & = \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 1 \\} \\frac{1}{\\phi} + (m - \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 1 \\}) \\frac{1}{1 - \\phi} \\\\\n",
    "                                                                & = 0\n",
    "\\end{align*}\n",
    "\n",
    "We have $\\phi = \\frac{1}{m} \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 1 \\}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Also, take derivative of $\\ell$ w.r.t $\\mu_0$ and set to 0:\n",
    "\n",
    "\\begin{align*}\n",
    "\\frac{\\partial}{\\partial \\mu_0} \\ell(\\phi, \\mu_0, \\mu_1, \\Sigma) & = \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 0 \\} \\Sigma^{-1} (x^{(i)} - \\mu_0) \\\\\n",
    "                                                                 & = 0\n",
    "\\end{align*}\n",
    "\n",
    "We can easily obtain that $\\mu_0 = \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 0\\} x^{(i)} / \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 0\\}$. Similarly, $\\mu_1 = \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 1\\} x^{(i)} / \\sum_{i = 1}^{m} 1 \\{ y^{(i)} = 1\\}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "To compute $\\Sigma$, we need to simplify $\\ell$ while maintaining $\\Sigma$:\n",
    "\n",
    "\\begin{align*}\n",
    "\\ell(\\phi, \\mu_0, \\mu_1, \\Sigma) & = \\log \\prod_{i = 1}^{m} p(x^{(i)} \\ \\vert \\ y^{(i)}; \\ \\mu_0, \\mu_1, \\Sigma) \\ p(y^{(i)}; \\ \\phi) \\\\\n",
    "                                 & = - \\frac{m}{2} \\log \\vert \\Sigma \\vert - \\frac{1}{2} \\sum_{i = 1}^{m} (x^{(i)} - \\mu_{y^{(i)}})^T \\Sigma^{-1} (x^{(i)} - \\mu_{y^{(i)}}) + C \\\\\n",
    "                                 & = - \\frac{m}{2} \\log \\vert \\Sigma \\vert - \\frac{1}{2} \\sum_{i = 1}^{m} \\operatorname{tr} \\big( (x^{(i)} - \\mu_{y^{(i)}})^T \\Sigma^{-1} (x^{(i)} - \\mu_{y^{(i)}}) \\big) + C \\\\\n",
    "                                 & = - \\frac{m}{2} \\log \\vert \\Sigma \\vert - \\frac{1}{2} \\sum_{i = 1}^{m} \\operatorname{tr} \\big( \\Sigma^{-1} (x^{(i)} - \\mu_{y^{(i)}}) (x^{(i)} - \\mu_{y^{(i)}})^T \\big) + C\n",
    "\\end{align*}\n",
    "\n",
    "Since $n = 1$, i.e. $\\vert \\Sigma \\vert = \\sigma^2$, by taking derivative of $\\ell$ w.r.t $\\Sigma$ and set to 0:\n",
    "\n",
    "\\begin{align*}\n",
    "\\frac{\\partial}{\\partial \\Sigma} \\ell(\\phi, \\mu_0, \\mu_1, \\Sigma) & = - \\frac{m}{2 \\Sigma} + \\frac{1}{2} \\sum_{i = 1}^{m} (x^{(i)} - \\mu_{y^{(i)}}) (x^{(i)} - \\mu_{y^{(i)}})^T \\Sigma^{-2} \\\\\n",
    "                                                                  & = 0\n",
    "\\end{align*}\n",
    "\n",
    "We have: $\\Sigma = \\frac{1}{m} \\sum_{i = 1}^{m} (x^{(i)} - \\mu_{y^{(i)}}) (x^{(i)} - \\mu_{y^{(i)}})^T$.\n",
    "\n",
    "In fact, even if $n \\neq 1$, this maximum likelihood estimate still holds. Recall that:\n",
    "\n",
    "\\begin{align*}\n",
    "\\det (A^{-1}) & = \\frac{1}{\\det (A)} \\\\\n",
    "\\frac{\\partial}{\\partial A} \\log \\vert A \\vert & = A^{-T}\n",
    "\\end{align*}\n",
    "\n",
    "Simplify $\\ell$ w.r.t $\\Sigma^{-1}$:\n",
    "\n",
    "\\begin{align*}\n",
    "\\ell(\\phi, \\mu_0, \\mu_1, \\Sigma) & = - \\frac{m}{2} \\log \\vert \\Sigma \\vert - \\frac{1}{2} \\sum_{i = 1}^{m} (x^{(i)} - \\mu_{y^{(i)}})^T \\Sigma^{-1} (x^{(i)} - \\mu_{y^{(i)}}) + C \\\\\n",
    "                                 & = \\frac{m}{2} \\log \\vert \\Sigma^{-1} \\vert - \\frac{1}{2} \\sum_{i = 1}^{m} \\Sigma^{-1} (x^{(i)} - \\mu_{y^{(i)}}) (x^{(i)} - \\mu_{y^{(i)}})^T + C\n",
    "\\end{align*}\n",
    "\n",
    "We can derive the same estimate by solving:\n",
    "\n",
    "\\begin{align*}\n",
    "\\frac{\\partial}{\\partial \\Sigma^{-1}} \\ell(\\phi, \\mu_0, \\mu_1, \\Sigma) & = \\frac{m}{2} \\Sigma - \\frac{1}{2} \\sum_{i = 1}^{m} (x^{(i)} - \\mu_{y^{(i)}}) (x^{(i)} - \\mu_{y^{(i)}})^T \\\\\n",
    "                                                                       & = 0\n",
    "\\end{align*}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### (e)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Implement GDA model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [],
   "source": [
    "class GDA(LinearModel):\n",
    "    \"\"\"Gaussian Discriminant Analysis.\n",
    "\n",
    "    Example usage:\n",
    "        > clf = GDA()\n",
    "        > clf.fit(x_train, y_train)\n",
    "        > clf.predict(x_eval)\n",
    "    \"\"\"\n",
    "\n",
    "    def fit(self, x, y):\n",
    "        \"\"\"Fit a GDA model to training set given by x and y.\n",
    "\n",
    "        :param x: Training example inputs. Shape (m, n).\n",
    "        :param y: Training example labels. Shape (m,).\n",
    "        \"\"\"\n",
    "\n",
    "        m, n = x.shape\n",
    "\n",
    "        phi = np.sum(y) / m\n",
    "        mu_0 = np.dot(x.T, 1 - y) / np.sum(1 - y)\n",
    "        mu_1 = np.dot(x.T, y) / np.sum(y)\n",
    "\n",
    "        # Reshape y to compute pairwise product with mu\n",
    "        y_reshaped = np.reshape(y, (m, -1))\n",
    "\n",
    "        # Matrix comprises mu_0 and mu_1 based on the value of y. Shape(m, n)\n",
    "        mu_x = y_reshaped * mu_1 + (1 - y_reshaped) * mu_0\n",
    "\n",
    "        x_centered = x - mu_x\n",
    "\n",
    "        sigma = np.dot(x_centered.T, x_centered) / m\n",
    "        sigma_inv = np.linalg.inv(sigma)\n",
    "\n",
    "        # Compute theta and theta_0 according to the conclusion from part (c)\n",
    "        theta = np.dot(sigma_inv, mu_1 - mu_0)\n",
    "        theta_0 = 1 / 2 * mu_0 @ sigma_inv @ mu_0 - 1 / 2 * mu_1 @ sigma_inv @ mu_1 - np.log((1 - phi) / phi)\n",
    "\n",
    "        self.theta = np.insert(theta, 0, theta_0)\n",
    "\n",
    "    def predict(self, x):\n",
    "        \"\"\"Make a prediction given new inputs x.\n",
    "\n",
    "        :param x: Inputs of shape (m, n).\n",
    "        :return:  Outputs of shape (m,).\n",
    "        \"\"\"\n",
    "\n",
    "        # Add x_0 = 1 convention to make predictions using theta^T x >= 0\n",
    "        return util.add_intercept(x) @ self.theta >= 0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### (f)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Rewrite `plot` function to allow a second decision boundary:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [],
   "source": [
    "def plot(x, y, theta_1, legend_1=None, theta_2=None, legend_2=None, title=None, correction=1.0):\n",
    "    # Plot dataset\n",
    "    plt.figure()\n",
    "    plt.plot(x[y == 1, -2], x[y == 1, -1], 'bx', linewidth=2)\n",
    "    plt.plot(x[y == 0, -2], x[y == 0, -1], 'go', linewidth=2)\n",
    "\n",
    "    # Plot decision boundary (found by solving for theta_1^T x = 0)\n",
    "    x1 = np.arange(min(x[:, -2]), max(x[:, -2]), 0.01)\n",
    "    x2 = -(theta_1[0] / theta_1[2] * correction + theta_1[1] / theta_1[2] * x1)\n",
    "    plt.plot(x1, x2, c='red', label=legend_1, linewidth=2)\n",
    "\n",
    "    # Plot decision boundary (found by solving for theta_2^T x = 0)\n",
    "    if theta_2 is not None:\n",
    "        x1 = np.arange(min(x[:, -2]), max(x[:, -2]), 0.01)\n",
    "        x2 = -(theta_2[0] / theta_1[2] * correction + theta_2[1] / theta_2[2] * x1)\n",
    "        plt.plot(x1, x2, c='black', label=legend_2, linewidth=2)\n",
    "\n",
    "    # Add labels, legend and title\n",
    "    plt.xlabel('x1')\n",
    "    plt.ylabel('x2')\n",
    "    if legend_1 is not None or legend_2 is not None:\n",
    "        plt.legend(loc=\"upper left\")\n",
    "    if title is not None:\n",
    "        plt.suptitle(title, fontsize=12)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Load dataset 1 and drop the \"$x_0 = 1$\" convention:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [],
   "source": [
    "x_train, y_train = util.load_dataset(ds1_training_set_path)\n",
    "x_valid, y_valid = util.load_dataset(ds1_valid_set_path)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Train GDA model using dataset 1:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [],
   "source": [
    "gda = GDA()\n",
    "gda.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Plot decision boundaries found by logistic regression and GDA on validation set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(x_valid, y_valid, theta_1=log_reg.theta, legend_1='logistic regression', theta_2=gda.theta, legend_2='GDA', title='Validation Set 1')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "GDA performs worse than logistic regression on dataset 1 as expected."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### (g)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Repeat the steps in part (f) for dataset 2:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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wqmnnkq/fv3o06cPr732GqAFfO3atZSVlXHttdc6j3300Ud57bXXWLt2Lenp6Zx22mkUFBQ49wd455136NSpEx06dKBHjx6V2vPiiy8yaNAgLrnkEi688EIOHDjA9ddfT9euXenYsSNvvvkmAPn5+QwePJj27dtz5ZVX0q1bN+c1EhMTmTBhAt26dePTTz9l/vz5nH766Zx22mncfPPNlJWV+Ww7wOOPP84pp5xC+/btGTJkiLNNt912GwBbt26lR48etG/fnh49ejj/QV977bXccccdnHXWWRx33HHO7yqS2LZnW7W2GwxVsXr1as444wzS09PZtm0bHYD3gaXnn8/J69bVSNyrREQi5tW5c2fx5rvvvnO9gdC8qiAhIUFERF577TXp2bOnlJaWyh9//CHHHHOM/Pbbb/Lqq69K7969paysTH7//Xc55JBD5NVXXxURkfPOO0/WrFkja9eulZ49ezrP+c8//3h8bmG9/+uvv6Rly5ayZcsWERHZtWtXpXbNmTNHjj76aOdn48aNk3nz5jnP36ZNG9m/f7888sgjkpGRISIiGzduFLvd7rwmIK+88orzu+7Xr58UFxeLiMjIkSNl7ty5ftt+5JFHSmFhoce2OXPmyK233ioiIv369ZMXX3xRRESef/55ufTSS0VEZPjw4XLFFVdIWVmZfPvtt9K6detK9+bxdw8DKY+mCA9Q6ZXyaEpY29WQmP/1fEl5NEXUA0pSHk2R+V/PD3eTwsJPP/0kAwcOFEAAORLkeZDSNm1E3nxTpLy8VucH1oofTTURfDVYvXo1V111FXa7ncMPP5zzzjuPNWvWsHr1agYNGoTNZuOII44gLS2t0rHHHXccW7Zs4fbbb+edd96hadOmAa/12Wef0b17d2cu+KGHHupzv169ejk/e++993jooYc47bTTOP/88yksLGTbtm2sXr3aGWG3bduW9u3bO4+32+1cfvnlAKxcuZJ169bRtWtXTjvtNFauXMmWLVv8tr19+/akp6czf/58n/bQp59+ytVXXw3AsGHDWL16tfOzAQMGYLPZOOWUU/jzzz8DfhfhIKtHFvGOeI9t8Y54snpkhalFDQszhgF///03o0eP5pRTTmHRokXEAROAHw89lOufeAL7t99C//4QwqyxhiXwoYrhg7687339bXenWbNmbNiwgfPPP5+nnnqKG2+8scprBZMumJCQ4HHM66+/zldffcVXX33Ftm3bOPnkkwO2LzY21um7iwjDhw93Hr9p0yYeeOABv21/++23ufXWW1m3bh2dO3emtLQ0YFvd7ycmJsaj3ZFGert0si/JJiUpBYUiJSmF7EuySW+XHu6mNQgyV2aSX5LvsS2/JJ/MlZlhalH9UVxczGOPPcbxrVvz6KOPUlpSwrXATw4Hk+65h8TNm+G226AeZmo3LIEPM927d+eVV16hrKyMHTt28NFHH3H66adzzjnn8Prrr1NeXs6ff/7JBx98UOnYnTt3Ul5ezuWXX86UKVP48ssvAWjSpAn79u2rtP+ZZ57Jhx9+yP/+9z9ARwNVcdFFF/HEE084BXP9+vUAnHPOOSxcuBCA7777jo0bN/o8vkePHrz22mv89ddfzmtu3brVZ9vLy8v55ZdfSEtLY9q0aezevbvSQPRZZ53FggULAMjJyeGcc86p8h4iifR26eTdmUf5xHLy7swz4l4NDsYxDBFh8eLFnHrqqdx11138s3s3FwDrgDmDB3P0pk0wbRoccki9tSniSxVEEpdddhmffvopHTp0QCnFtGnTOOKII7j88stZuXIlbdu25YQTTqBbt24kJSV5HPvrr79y3XXXOXNdp06dCugBxxEjRhAXF8enn37q3L9FixZkZ2czcOBAysvLOeyww1ixYkXA9o0fP54777yT9u3bIyKkpqaydOlSbrnlFoYPH0779u3p2LEj7du3r9Q+gFNOOYV//etfXHjhhZSXl+NwOHjqqaeIi4ur1PaysjKGDh3Knj17EBHuuusuDvH6h/v4449z/fXX88gjj9CiRQvmzJlT7e/c0DBpldTKZxZSq6RWYWhN6Fm7di1jxozho48+AuBEdGZMv27dUI8+CmeeGZ6G+TPnw/GqcpA1gtm3b5+IiOzcuVOOO+44+f3338PcIhelpaVSUFAgIiI///yzpKSkSFFRUZhbFZiG8nc3+Gb+1/MlPiveY4A6Piu+0Q20btu2TYYOHeocQE0GeRKkODVV5JVXaj2AGgwEGGQ1EXwd0a9fP3bv3k1xcTHjx4/niCOOCHeTnOTn55OWlkZJSQkiwuzZs4mOjg53swyNGMvOylyZybY922iV1IqsHlmNxubat28fDz30EDNnzqSwsJBoYBRwX9OmHDJ+PNx+O7iNM4ULI/B1hC/fPVJo0qSJWQrRUO+kt0tvNIJuUVpaygsvvMD4++/nrx07ALgSmGq3c+wtt8CECdC8eXgb6YYZZDUYGjCmXk798e677zonAP61YwdnAJ8AC/r359hvv4XHH48ocYcQCrxS6kSl1Fdur71KqTtDdT2D4WDD5JrXD9988w0XX3wxF198Md9++y2pwCvAJx07cmZuLrz5Jpx4Yphb6ZuQCbyIbBKR00TkNKAzkA8sDtX1DIaDjYM517w++OOPP8jIyKBDhw68++67NAWmAd8fdRSD585FrV0L558f5lYGpr4smh7AZhGpnDdlMDRAIsEaORhzzeuD/Px8srKyaHP88fz73/9GlZdzK/BzfDz3TJlC7E8/wTXXgC3yHe76auEQ4GVfHyilMpRSa5VSa3dUDFpEGn/++SdXX301xx13HJ07d+bMM89k8eLFfPDBByQlJdGxY0dOPPFEunfvztKlSz2OLS0tpXnz5owbNy5MrTfUNZFijfjLKW+sueahpry8nHnz5nHiCSdw//33s//AAS4BvlGKJ2+6iRabN8P990N8fJXnihRCLvBKqWigP/Cqr89FJFtEuohIlxYtWoS6OdVGRBgwYADdu3dny5YtrFu3jgULFrB9+3YAzj33XNavX8+mTZt4/PHHue2221i5cqXz+Pfee48TTzyRhQsXRuSUfEP1iRRrxNTLqTusWenXXHMN23/9ldOAlcCSiy7ipA0bIDsbIij1OVjqI4LvDXwpIpFXUSoIVq1aRXR0NCNGjHBuS0lJ4fbbb6+072mnncaECRN48sknndtefvllRo0aRatWrfjss8/qpc2G0BIp1oipl1N7fvrpJy677DLOO+881q1bx1HAHGDtKadwwfLl8M470K5duJtZY+ojD/4q/Ngz1SVUa3UGiqy//fZbOnXqFPS5OnXqxCOPPALoVVtWrlzJs88+y+7du3n55Zc5M1xTlg11RiRNw2+Mueb1wd9//83kyZN56qmnKC0tJR74P2BMixYk/OtfcP31UMsFdCKBkEbwSql4oBewKJTXqU9uvfVWOnToQFc/xfndO4ulS5eSlpZGfHw8l19+OYsXL6asrKy+mmoIEaG2RiJhALexUlRUxMyZM2l93HHMmjWLstJSrgd+iolhQmYmCZs3Q0ZGoxB3CHEELyL5QHIdnq+uThU0p556Kq+//rrz/VNPPcXOnTv9LrG3fv1651Jz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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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XD0yO7lnSUlNYeTqkTZF5Fs8leD7AAs8tC+Xq1KlSok/++STT7J7926Hr8+bN49ffvnF6fd7u48//phXX33V7jCUnzh86nCxnle5uf0iqzGmPNADGOHg9QHAAIDQ0FB3h+Nxc+bMKfT1efPmER4ezpVXXunU+x1JS0ujXLnS/TnT09MJDAws1TZ69OhBjx49SrUNpbKEVg/l0Kn8X/xDq/tfrnAHT4zguwHbROT3gl4UkdkiEikikbVqFdhOwWuICM8//zzh4eE0b96c999/H4CMjAwGDhxIs2bN6N69O3fddReLFy8G4NZbb2Xr1q2kp6fTv3//7M++/vrrLF68mK1btxIdHU2rVq04f/589vsBVq5cSevWrWnZsiVRUVH54pk3bx4PPvgg99xzD7fffjvnzp3j8ccfp23btkRERPDRRx8BkJKSQu/evWnRogUPPfQQN9xwQ/Y+qlSpwujRo7nhhhvYtGkTCQkJtGvXjlatWvH000+Tnp5eYOwA06ZNo2nTprRo0YI+ffpkx/TMM88AcOjQIaKiomjRogVRUVEcPmyNuvr378+zzz7LTTfdRMOGDbP/WymVV3xUPMFBwbmeCw4KJj4q3qaIfIyIuPUBLAQec+a9bdq0kbx279791y/gnkcRKleuLCIiixcvlq5du0paWpr89ttvUr9+ffnll1/kgw8+kG7dukl6err8+uuvUqNGDfnggw9ERKRTp06yZcsW2bp1q3Tt2jV7m3/++Weu17Nk/f7HH39IvXr15MCBAyIicvz48XxxzZ07V6666qrs10aMGCHvvfde9vavu+46OXv2rLz22msyYMAAERFJTk6WwMDA7H0C8v7772f/t+7evbtcunRJRERiY2Nl/vz5DmOvW7euXLhwIddzc+fOlbi4OBER6d69u8ybN09ERN555x259957RUSkX79+8sADD0h6errs2rVLrrnmmnzHluvvrsq0hJ0JEvZ6mJgxRsJeD5OEnQl2h+RVgK3iIKe6tURjjAkGbgOedud+PGXDhg08/PDDBAYGcsUVV9CpUye2bNnChg0bePDBBwkICKBOnTp07tw532cbNmzIgQMHGDRoEHfffTe33357ofv65ptv6NixY/Zc8Msvv7zA9912223Zr61atYqPP/6Yf/7zn4A1xfTw4cNs2LCBwYMHAxAeHk6LFi2yPx8YGMj9998PwOrVq0lKSqJt27YAnD9/ntq1a3PPPfcUGHuLFi2Ijo6mZ8+e9OzZM19smzZt4sMPPwSgb9++DB8+PPu1nj17EhAQQNOmTfn99wK/3CkFWLNldMZMybi1RCMiKSISIiKnXLRB9zycP55iPZ/TZZddxo4dO7j11luZMWMGTz75ZJH7cma6YOXKlXN9ZsmSJXz33Xd89913HD58mCZNmhQaX8WKFbPr7iJCv379sj+/b98+xowZ4zD2Tz/9lLi4OJKSkmjTpg1paWmFxprzeCpUqJArblVyOk9cOaK9aIqhY8eOvP/++6Snp3P06FG++uor2rVrR4cOHViyZAkZGRn8/vvvfPnll/k+e+zYMTIyMrj//vt5+eWX2bZtGwBVq1blzJkz+d7fvn171q1bx48//gjAiRMniozvjjvu4M0338xOmNu3bwegQ4cOLFq0CIDdu3eTnJxc4OejoqJYvHgxf/zxR/Y+Dx06VGDsGRkZ/PTTT3Tu3JlJkyZx8uRJzp49m2t7N910EwsXLgQgMTGRDh06FHkMqniy5okfOnUIQbLniWuSV+ADrQq8yX333cemTZto2bIlxhgmTZpEnTp1uP/++1m9ejXh4eFcf/313HDDDVSvXj3XZ3/++Wcee+wxMjIyAJgwYQJgXXCMiYmhUqVKbNq0Kfv9tWrVYvbs2fTq1YuMjAxq167N559/Xmh8o0aNYsiQIbRo0QIRoUGDBixfvpyBAwfSr18/WrRoQUREBC1atMgXH0DTpk0ZP348t99+OxkZGQQFBTFjxgwqVaqUL/b09HQeeeQRTp06hYgwdOhQatSokWt706ZN4/HHH+e1116jVq1azJ07t9j/zVXhCpsnrmUN3/Djjz9y+PBhOnXq5PJtG2/6ehwZGSl5F/zYs2cPTZo0sSki5509e5YqVapw/Phx2rVrx9dff02dOnXsDguwpj+mpqZSsWJF/ve//xEVFcX+/fspX7683aE55Ct/d7sFjA1AyP//YYMh46UMGyJSzrp06RJTpkxh3LhxVK9Wjb379hU48CqKMSZJRCILek1H8C7SvXt3Tp48yaVLlxg1apTXJHewpkl27tyZ1NRURISZM2d6dXJXztN54r5p/fr1xMTEZN/UeF+1aqReuuTy/WiCd5GC6u7eomrVqroUop+Kj4rP1asFdJ64Nzt27BjDhw/PLldeB7wFdE1NhTNnwMX3AulFVqV8WHTzaGbfM5uw6mEYDGHVw5h9z2ytv3sZEWHu3Lk0btyYuXPnUh54CdgJdH38cdi3Dxo2dPl+dQSvlI/TeeLebdeuXcTGxrJ+/XrA6rz4FnB906YwcyZ07Oi2fesIXiml3CAlJYURI0bQqlUr1q9fT21jSAQ+r1iR6ydMgO3b3ZrcQUfwSinlcitWrCAuLo6DBw9igBjgFREuu+sumD4dPLRamY7gnfD777/zt7/9jYYNG9KmTRvat2/P0qVL+fLLL6levToRERE0atSIjh07snz58lyfTUtLo2bNmowYUWAzTaWUHzly5AgPPPAAd999NwcPHqQlsBGYedVVXLZkCSxf7rHkDprgiyQi9OzZk44dO3LgwAGSkpJYuHAhR44cAeCWW25h+/bt7Nu3j2nTpvHMM8+wevXq7M+vWrWKRo0asWjRIr0lXyk/lZaWxtSpU2nSpAlLliyhsjFMAbYaw41Dh8KePdCrF3h4tTJN8EVYs2YN5cuXJyYmJvu5sLAwBg0alO+9rVq1YvTo0UyfPj37uQULFjB48GBCQ0P55ptvPBKzUspzNm/eTLt27Rg6dChnz56lF7BHhKHt2lEuKQmmTIGqVW2JzacSvDHGLY/C7Nq1i9atWzsdY+vWrdm7dy9gdWNcvXo13bt35+GHH2bBAp9d1EoplcfJkyeJi4vjxhtvZPv27YQBnwBLqlen/syZsHEjRETYGqNPJXhvEBcXR8uWLbNb6uaVswyzfPlyOnfuTHBwMPfffz9Lly4lPT3dU6Eq5Zfs7p4pIixcuJAmTZrw1ltvESjCC8AuoHt0tDWnPSYGSrk6miv41CwaO2rYzZo1Y8mSJdm/z5gxg2PHjhEZWWDrB7Zv357dQ2XBggV8/fXXNGjQAIDjx4+zdu1aunbt6va4lfJHWd0zs+7czeqeCXjkXoAffviBuLi47MZ/NwNvA+HXXWfNaS9g5TU76Qi+CF26dOHChQvMnDkz+7mUlJQC37tz505efvll4uLiOH36NBs2bODw4cMcPHiQgwcPMmPGDC3TKFUKhXXPdKeLFy8ybtw4mjdvzueff87lxjAH+Kp8ecLHjoWdO70uuYOPjeDtYIxh2bJlDB06lEmTJlGrVi0qV67MxIkTAatpUEREBCkpKdSuXZtp06YRFRXFvHnz6NKlS66FLe69916GDx/OxYsXcz2vlHLO4VOHi/W8K6xZs4bY2Fj2798PQH9gkgi1brsNZsyA665z275LSxO8E+rWrZu9cEVep04VvFhV//796d+/f67nLr/8co4ePerq8JQqMzzZPfP3339n2LBhJCQkANAEmAl0uuIKmDoVHnrI49Mei0tLNEopnxEfFU9wUHCu51zdPTMjI4NZs2bRuHFjEhISqGgM8cB3QKe4ONi7F/r08frkDjqCV0r5kKwLqSNXj+TwqcOEVg8lPireZRdYd+zYQUxMTPY9K3cCM0RoGBEBs2aBg9lz3sonEryzC1Ar/6B3/NorMTnRbQnUFdzRPfPs2bOMGTOGqVOnkp6ezpXG8IYI91epgomPh4EDoZxPpMtcvD7iihUrcvz4cUJCQjTJlwEiwvHjx6lYsaLdoZRJdk9DtMOyZcsYNGgQR44cIQB4FnhZhGoPPgivvw5XXWV3iCXm9WuypqamcuTIES5cuGBTVMrTKlasSL169QgKCrI7lDKnwdQGBV7EDKsexsEhBz0fkBsdOnSIQYMG8cknnwAQiTWnvc3VV1uzY7p1szU+Z/n0mqxBQUFc7cHua0qVZXZMQ/S01NRUXn/9dcaOHUtKSgrVjOEVEWLKlSPwhRfgxRchOLjoDfkAr0/wSinP8fdFvL/++mtiYmL4/vvvAXgImCLClZ06WXeiZt6F7i/cOk3SGFPDGLPYGLPXGLPHGNPenftTSpWOJ6Yh2uHEiRM89dRTdOjQge+//56GwEpgYc2aXDlvHqxd63fJHdw/D/4NYKWINAZaAnvcvD+lVCn42yLeIsK7775Lo0aNmDNnDkHAP4DvgTueesqa096vny1z2idNss4rOa1daz3vMiLilgdQDfiRzAu5zjzatGkjSinlCrt375ZOnToJIIDcCrIHRMLDRTZssDs8WbNGpGZN62dBvzsL2CoOcqo7R/ANgaPAXGPMdmPMHGNMZTfuTymlOH/+PP/4xz9o2bIl69ato5YxvAusqVSJxpMmwbZtcPPNdodJ586waBH07g2jR1s/Fy2ynncVdyb4ckBrYKaIRADngL/nfZMxZoAxZqsxZqv2aVFKlcZnn31GeHg48fHxpKam8hSwV4S+PXpg9uyB558HL5p+27kzxMbCyy9bP12Z3MG9Cf4IcEREvs38fTFWws9FRGaLSKSIRNaqVcuN4Sil/NUvv/zCQw89xJ133smBAwdoDnwNzK5fn8uXLYOPPoKwMJujzG/tWmvyzqhR1s+8NfnScluCF5HfgJ+MMY0yn4oCdrtrf0qpsic9PZ0333yTxo0bs2jRIoKN4TUgKSCAm4YNg9274d577Q6zQGvX/lWWGTfur3KNK5O8u+fBDwISjTHlgQPAY27en1KqjEhKSuLpp58mKSkJgB7AmyKEtm8Pb78NLVrYG2ARtmzJXXPPqslv2eK6Uo3XtypQSqmcTp06xahRo5gxYwYZGRnUB94E7r3sMpg4EZ54AgLKTid0n25VoJRSYE3p/uCDDxgyZAi//vorgcAw4CWgyqOPwmuvQe3aNkfpXTTBK6W83v/+9z+eeeYZVq5cCUB7rMZgLRo1ssoxt95qZ3heq+x8j1FK+ZyLFy8SHx9PeHg4K1eupIYxzAI2VKhAi/HjYccOTe6F0BG8UsorrVu3jpiYGPbu3QtAX+CfItS+806YPh2uucbeAH2AjuCVUl7l6NGj9O/fn1tvvZW9e/dyPbAaeLduXWovWgQrVmhyd5ImeKWUV8jIyGDOnDk0atSI+fPnUwEYB+w0hi7PPms1BnvwQZ9Y7NpbaIlGKWW75ORkYmJi2LhxIwC3AW8B10ZGWhdR27SxNT5fpSN4pZRtzp07xwsvvEDr1q3ZuHEjdYCFwGdVq3Lt9OnwzTea3EtBR/BKKVt88sknPPPMMxw+fBgDxAHjgRp9+sCUKVC3rs0R+j5N8Eopj/rpp58YPHgwS5cuBSACmAW0veYaeOstuP12W+PzJ1qiUUp5RFpaGlOmTKFJkyYsXbqUqsYwFdgcFETb0aMhOVmTu4vpCF4p5XbffPMNMTEx7NixA4AHgKkiXNWlizVqb9So8A2oEtERvFLKbf78809iYmK46aab2LFjBw2AT4EPatfmqoQE+OILTe5upAleKeVyIkJiYiKNGzdm1qxZBIowAtgF3BUTY81pj47WOe1upiUapZRL7du3j4EDB7JmzRoAbgFmAs1atrTmtN94o63xlSU6gldKucSFCxd46aWXaNGiBWvWrCEEmAusCw6m2ZQpsHWrJncP0xG8UqrUPv/8cwYOHMh///tfAB4HJgEhvXrB1KlQv76d4ZVZmuCVUiX222+/8dxzz7FgwQIAmmL1ab8lLMzq+Ni9u63xlXVaolFKFVt6ejpvvfUWjRs3ZsGCBVQCXgW2BwZyywsvwK5dmty9gI7glVLFsn37dmJiYti8eTMAdwPTgQYdOsDMmRAebmt86i86gldKOeXMmTMMHTqUyMhINm/ezFXAEuCTyy6jwTvvwLp1mty9jI7glVKFEhE+/PBDBg8ezM8//0wAMBQYC1R9/HGYOBFq1rQ5SlUQTfBKKYd+/PFHnnnmGVasWAFAO6yLqBFNm1rlmI4dbY1PFU5LNEqpfC5dusSrr75Ks2bNWLFiBdWxFuDYWLEiERMmwPbttiT3SZNg7drcz61daz2v8tMEr5TKZf369bRu3ZoRI0Zw/vx5/gbsBWLvuovA3bvh73+H8uVtia1tW+jd+68kv3at9XvbtqXbrr+eONya4I0xB40xycaY74wxW925L+WfEpMTaTC1AQFjA2gwtQGJyYlevV1fduzYMZ544gk6duzIrl27uBZYBSRedRV1liyB5cvh6qttiy8r2S5aZCX10aPhvvugVy/o3Ll023bXicN2IuK2B3AQqOns+9u0aSNKZUnYmSDB8cHCGLIfwfHBkrAzwSu366syMjLk3//+t4SEhAgg5UFeAjlvjMjQoSKnT9sdooiIrFkjUrOm9XPUKBEQqVTJ+t2V2x816q/9+AJgqzjIqVqiUW7hihHyyNUjSUlNyfVcSmoKI1ePLFVs7tquL9q1axedOnXi8ccf5/jx40QBycCYdu2omJRkLZ1XtardYQLWKH3RIujZEyZPhkqVXFsp6twZYmPh5Zetn6X9VuAN3J3gBVhljEkyxgxw876Ul0hMTmTAJwM4dOoQgnDo1CEGfDKg2En+8KnDxXre7u3m5O013ZSUFF588UVatWrF+vXrqQ0kAJ9Xq8b1M2fCxo0QEWF3mAVKS4OUFBg2DJYuzV1aKY21a62JQaNGWT9dsU27uTvB3ywirYFuQJwxJt9ld2PMAGPMVmPM1qNHj7o5HOWJ2rOrRsih1UOL9bzd283Jm2u6K1asoFmzZkyYMIH0tDRisC6iRkdHY/bvh5gYCAy0O8wCLVwI5cr9lYTBGtVv2VK67Wb9fRYtgnHj/qrz+3qSd2uCF5FfMn/+ASzFmkab9z2zRSRSRCJr1arlznDKPFeNrIviqhFyfFQ8wUHBuZ4LDgomPiq+xLG5Y7sFnTSzyglZFwOzkoedX/uPHDnCAw88wN13383BgwdpCWwEZl53HZd98QUkJMAVV9gXYBHWroUPP4Rly3InYYDhw53fTkHfrhYuzH2xNuvvV9oTh93cluCNMZWNMVWz/g3cDnzvrv2ponmq9uyqEXJ082hm3zObsOphGAxh1cOYfc9soptHAyX/NlLUdoujsJOmt9R009LSeOONN2jSpAlLliyhMjAF2Fq+PDeOHQs7d0JUlD3BFcOWLblPkiVNwgV9u/rwQ+jTJ/f7Oncu3onDGxnrIqwbNmxMQ6xRO1h3zP5HRAodIkVGRsrWrTqb0l0CxgYg5P97GwwZL2W4bD9ZSS/nySQ4KLjESdSufTijwdQGHDp1KN/zYdXDmNvyIL17W8l95kx7RvCbN28mJiaG7du3A3Af8AZQv2tXa7Hr665z+T4nTbKSaM5jXbvWSsTekjCzSjJ2/m1cxRiTJCKRBb3mthG8iBwQkZaZj2ZFJXflfo5G0JdXutyl+3HlCNkRb5kJU1g5ys6a7smTJ4mLi+PGG29k+/bthAIfAx9ecQX1FyyAVavcktzBu68/ZPGWb1fuptMky5D4qHiCAoLyPX/m0hmX1+Gjm0dzcMhBMl7K4OCQgy4fVZe0zu/qi8yOTprVTahLygnFJSIsXLiQJk2a8NZbbxEownBgN3BPXJy12HWfPm5d7Nobrz/k9fTTMG1a7hkz3jTLyVU0wZch0c2jqVahWr7nL6VfcsnI15N3h5akzu+Oi8yOLthOvy8+X0Jzd033v//9L3fccQcPP/wwv/32GzcD24CJERFU3rzZWmGpRg33BZCDN4+Q166F998Hkb9ORvfdZ82v96ZvGa6gCb6MOXH+RIHPF3eGS95kPvDTgR6ZoZOlJDNh3FHW8UQ5qigXL15k3LhxhIeH8/nnn3M5MAf4qkoVmr/xBmze7PHM5c1zyrdssebPL1v2VylJxPpi400nIldw20XWktCLrO5X2EXBg0MOOrWNgi5wGkyBF3CLs93iSkxOZOTqkRw+dZjQ6qHER8UXmlg9dZHZk9asWUNsbCz79+8HoB/wGlDrwQfh9dfhqqs8HlPOOeWdO+f/3ZuMHm19yxg1yrpW4otsuciqvJMr5oAXNBIuKHGCa+8Ozau4dX5P3ODkKb///jt9+/YlKiqK/fv30xhYC8y7+mpqrVhhZVMXJndHd+bedZfvzin35m8ZrqIJvoxxRUmhOEnbm5KnMyc3b+8ymZGRwaxZs2jcuDEJCQlUBOKBHeXKcevIkfD999Ctm8v362hmTNeuvjmn3F/vXM1LV3Qqg6KbR5eqRhxaPbTAMk/eMo0r7jp1hZylnMsrXU6lcpU4cf5EvrJO3tJT1nUEwKM1dUd27NhBTEwM33zzDQB3AjOAhp06WUPQJk3ctu+cM2Pyzh2PiPC9OeWF3TTl7bEXh9bgVbE5usmoX8t+rPhhhdM1cU8ozg1Rrrg+4Q5nz55lzJgxTJ06lfT0dOpi3az0QEgIZvJkePRRt057zMlRzdofatm+qrAavCZ4VSLFvcBpl+IkbXdehC3pf69ly5YxaNAgjhw5QgAQB4wHqj31FEyYACEhpYqrOLLKGh0GJvLx2ZFINetYouvEM3tQtE+N4P1JYQleSzSqREpb5nEFZ5JmcW6IclR6Ku11hJKUfg4dOsSzzz7Lxx9/DEAbrMWuI8PD4e234eabSxVTcWUl9wFvJjL1wAAyAv46lleODeDFN2Fcn2g6d/beGTNlkV5kVT6poJuWHvnwEWpOqpnrwmhxZs64q3tlcebfp6am8tprr9G0aVM+/vhjqgJvAt9WqkTkpEmwbZvHkzv8VbNO/C3/sRCUQuJv1rF464yZskoTvPJJBSVNgOPnj+e6wao4SdtdNy05+y3i66+/pnXr1gwfPpyUlBQewurT/kyPHgTu2QPPPw9B+VtNeMLw4VbyduZYvG3GTFmmJRrlkwqbqpk1Os5ZRnK2/u2O0lNRpZ8TJ07wwgsvMGfOHAAaYs2OubN+fXjzTbj3XpfGUxruKmMp99ARvPJJRSWUnCcAdzc+K4qjbxHju4zn3XffpVGjRsyZM4cg4B/A9wEB3DlsGOze7VXJHdxXxlLuoQle+aSCEk1O7hhRunKBkTHhY3hn8Dv069ePY8eOcSuwE3i5fXsqbd8Or70GVarkuoM06985ux56ugOiN/TeUc7TaZLKZyUmJzL4/wZz/PzxXM+7Y+EPVy0wcv78eV555RUmTpxIamoqNYHJQN8aNTCTJsETT0DAX+OunHdcgtUaIDAQPvnE+r13bxgxwlqIWuveZZP2olEu40238kc3j+bY8GMk9Epw2fJ7jo7NFZ0oP/vsM8LDwxk/fjypqak8BewDHn30Ucy+ffDUU7mSO+S+g3TtWiu5p6TA3Ll/JfcJE/ynza2jnjf+1qfdY0TEax5t2rQR5b0SdiZIcHywMIbsR3B8sCTsTCjx9sJeDxMzxkjY62El3o4rFHVsZozJ9VrWw4wxRW77559/lt69ewsggDQH2QAijRqJrFnjVHyjRomA9bNvX+vft9wiUrOm05vwCWvW5D6mvL+r/ICt4iCn6gheOc2V/dRLu/iGo9F2Sb9hFHVsxZlPnzUKTU9PZ/r06TRp0oRFixYRDEwCkipU4Obx42HHDtbSucjRac6uh2+8AR9/DLfcAuvXW33F/OmGIl9YDcqXaIJXTivpMnkFKc3JwtHJoTSLjhR1bMWZPdK2LfTqlUTTpjcwaNAgTp8+zT1Yy+a1DrqTrXN2wciRrN1Yoci1SvP2UjfGqrfv2AF9+0JCAkyZUuTh+RRvXg3K12iCV05zZT/10pwsHJ0cZifNLvFJo6hjc3b2yKlTp1i69FlOn27H/v1J1AeWAR+E1CVs0SICVq6gx9BrnB6d5ux6uGWLNaoNDLTa8b77Lvzzn9bI3o42t+6ql5eFPu2eogleOc2Vc6BLc7JwdBJIl3Sn35+YnEjNSTUxYw1mrOFYyjHKB5bP9Z68x1bYfHoR4YMPPqBJkya8+eabmIwM/h+QjKF2u2epcGAvPPggnbuYYo1Os+4gzfp3Wpq11NysWdZzzz0Hy5fb0xrAUY/40lzwLSt92j2l0ARvjKlmjLmmgOdbuC8k5UnO1qyzGnulpKYQaAIBSjVjpTQnC0cngQBT8P+c874/MTmRx5Y9lmt65bnUc1xKv5S9jeIc24EDB7jrrrvo3bs3v/76KzcCSUB0uUj+8+QWehx4g7VJ1mLnpR2d5kz4WexqDeCOenlhfdpV8TlM8MaY3litMJYYY3YZY3Kel+e5OzDlnNJMW3T2QmfO94E1Us5KxiWda5635BFSKYRK5SrR98O+RR5HQSeHoIAgDPl7opcPLJ/vpDFy9UhSM1IL3HaGZDh9bBcvXiQ+Pp5mzZqxcuVKagCzgHXBVflP5emc/L9viP1Xm+wkOGWK9TNrObuco1NfnQro6nq5N53A/EFhI/gXgTYi0gp4DHjPGNMr8zXPrC6gClXamSjOXuh09n15TzYDPx1Y6Mknq+TxXq/3OJ92nuPnjzt1HAXVw6tVqFZgiaZq+apEN4/OVS8uqs7vTN1+3bp1tGrVin/84x9cuHCBR7BGQwP69OFfQ/dx5ydxdO5qfdPJSuZffGH97NPHSuxg/b5wYelLG3bxlnq5zp8vmMM7WY0xySLSPMfvdYHlwHygv4i0dnUweidr8ZR2BaLCFrh4r9d72Q26HC2onXMhjILu9CxISKUQ3uj2Rq7RsStWUipqsY6ctd3HdhS8v4I+l9fRo0d5/vnnmT9/PgDXAzOBLtdcA2+9Bbff7lS8WfH48iIZeWf45P29rMbiaSW9k/VMzvq7iPwK3ArcCzQrxs4DjTHbjTHLnf2Mck5ppy06qmVfXunyXN8MnPm8o/a9eeVt51tYvK5Y3Dvr+ZwlkYg/4yGt8La7ebeXkZHBnDlzaNSoEfPnz6cCMA7YGRREl9GjITnZ6eSeFY+npgK6a3TrTfVynT9fsMISfCwQYIxpmvWEiJzBWuv3yWLsYzCwp2ThqcKUdtqiowudQJHJOu8F0eIk47wlEFdMv3Tmom1WUl02LpqeAXMJqVTwcnd5P5ecnEzHjh156qmn+PPPP7kN+B4Y1aULFZKTYexYqFTJ6VjBs6UNd8x2Ae+rl+v8+fwcJngR2SEiPwCLjDEvGEslYAow0JmNG2PqAXcDc1wSrcqltNMWHc3tPnH+hMPPOJoDXty58DlPCK6YfunMPPWcSXXDW9F80PYY8pI47GVz7tw5XnjhBVq3bs3XX3/NFcAC4LNatbg2IcEqqjdqVKzjzorDk1MBy8ro1luuB3gVRz0Msh5AZWA6sAlr4DICCCjqc5mfXYy1nOStwHIH7xkAbAW2hoaGurNlg19yRz+XsNfDCuy7EvZ6WKFx5O3lUtgj77bc3ZemuD1OPv74YwkNDRVADMhAkD9BJCZG5MSJUsUycWL+/a5ZYz3vTjn72fibstzDhkJ60TiTpMsDrwHfAf8F+hT1mczPdQfeyvy3wwSf86HNxrxDSZuK5U3SsctjJWRiSL7kXpoGZSXlbFI9fPiw3HfffdmNwSJAvgWRli1FNm3yWLyulpXwRo3yz8Rn10nTG5Q2we/Aup4UBNQBPgIWO/G5CcAR4CDwG5ACJBT2GU3w3sOVI2pntmV3Z8nU1FSZPHmyVK5cWQCpAjIVJDU4WGTyZJHUVI/G40qFjW7LcmL0F6VN8JEFPNe3qM/leb+O4JVDrm5DXFybNm2Sli1bZo/a7wc5AiK9eokcPuyRGNypsCTubGlDTwTeq1QJ3hUPTfCqMCWp+bvCiRMn5OmnnxZjjADSAGQ5iISFiXzyiVv37U2cKd+U5Rq3tysswXuk2ZiIfCki3T2xL1V6nl61yZVtiJ0hIiQmJtK4cWNmzZpFoAgjgF2Bgdz9wguwaxd0Lzv/c3VmemFZmYnjb7SbpMqltO0PHG2zsBOGK9sQF2Xfvn107dqVRx55hD/++INbsGYPvNKhA8HffQevvgqVK7t8v97M2emFOs/c92iCV7m4ctUmcO6E4co2xI5cuHCBl156iRYtWrBmzRpCgH8D6y67jGbvvAPr1kF4uMv25yuKMydf55n7Hk3wKhdXl0ucOWE4u5hGSUtHn3/+Oc2bN2fcuHFcunSJx7Eagz32+OOY/fvh8cfzLXZdVjjbbkD7tPsmh83G7KDNxuznisZfORXVBMxZBTUzCw4KLrRn+2+//cZzzz3HggULAGgKvA3c0rSpNQTt2LFYx1KWTZpktTbIWZZZu9Y6EWgrX3uVtNmYKiNyjozPXjpb5MpGxeGq+npxSkfp6enMnDmTq69uzIIFC6iEdVPG9ooVufLJCfwzersm92Lytr4zyjma4Mu4vDXy4+ePIyKEVAoptFziLFfV150tHW3fvp2bbrqJgQMHcuHCKe4CdgF/v+sukt7ZzY3L/k6b9uUL3JZS/qac3QEoexU0Mk7NSKVK+SocG36s1NvPOjFk9ZYPrR5aopWgQquHFlg6yvomcObMGUaPHs20adPIyMjgSmAacFfIlcReepPQ1vcxc7Dx2NQ+LWkob6AjeB9X2jnrnpiDXthi1c5y9E1gfJfxfPjhhzRp0oSpU6dCRgZDgL3GcP/QoVT6cS+hQ3rx8njj0al97mrRq1Rx6Ajeh+W98Jg1BRFwOokWNTL2FgV9ExjcaDALX1zIp59+CkBbrDVRI9q1g7ffhoiIfFP7Onf2TJLPeWOQL6/apHybjuB9mCvmrHtiDrqrZH0TuDDiAjEXYhh5/0g+/fRTqgNvAZuqVSNi5kzYuDE7uXtyal/elZM6d4Zu3fTGIGUfTfA+zBXlFWfnoJdUSZeLc/S52Nj1tG7dmhEjRnD+/HkexprTHhsdTeD+/RATA4HWYteeXlIub1lmyhRISIC+ffXGIGUTR01q7Hhos7HC5W2pW1CvdU806SqOkjapyvm+hJ0JUvMf9YRWZHd8vBZkFYhcd53IF1+4LN7Sdk3MirtvXxFjrE7DeY9HKVfC7m6Szj40wTtWUEvd8i+Xl6BxQbYvplGUki42sWaNSOUb35PAHuWFSlZiLw/yEsjZoHIiY8eKnD/vllhL0zUxa+Wkvn3zb9tT7XW1vW/ZoQneDzhqqRsyMcTWhTKcVZLl4r7//nsJDK2QPWrvArIXZFVDpNOLV7ot1tKsfuQtKydpe9+yQxO8HzBjTIEJ3owxdodWpOImvXPnzsmIESMkMLCcAFIbJAHkl2DkofsRXnL/cZfkhORtSdVbTjbKvQpL8HqR1Ud4sqWuKxV3JsuKFSto1qwZEyZMID09jaeB3cCfbaHJIHi/OWByH3dJL+QWFnNJuiZ6+qJuUbS9r7J91J7zoSN4x+xe1q6knK0FHzlyRB544IHsckwLkI0gxxuHSYfYCoUetytHzt42Ci+NNWtEKle2rgXkPabS1OK1vu9d0BKNf7B7YWp3SE1NlalTp0qVKlUEkMogk0FSq1QReeMNkdRUp47bVeUIf0leWf89Jk8u+GdpTlj+dBL0B5rglVf69ttvJSIiInvU3hPkMIg8+KDIkSPF3l5J6uZ2csXJxNE2unXLn4D79hUJDnZNItb6vvfQBK+8ysmTJyUuLi57setQkI9A5OqrRVasKNE2fS3hTJyYfzQ9eXLxE7Czo2l3nPx87YTqrzTBK6+QkZEhCxYskDp16ggg5UCGg5wtV07kxRdFzp0r0XZ9sWSQt4SS98aokmzL0cnNHSc/Xzuh+jNN8MojCis5/PDDD3Lbbbdll2NuAtkJIh07iuza5bb9erOsJHnLLVLgjVHF4Wg07Y6Tny+eUP2ZJnjlEQX9Hz8k5IL07z9WKlSwbli6DORfIOkhISLz5olkZNgbtM369rX+X3jLLaWf+VPQaNodJz9fPaH6K03wymNyJptq1VZLvXrXZ4/a+4H8ASJPPSVy7Jjdodpu8mSrLJM1jbEkM1zcPZrWZO79NMErj3ruud8FHslO7I1B1oJIeLjIhg12h+cVsuao521GNnmya2bRuCoBaznG+9mS4IGKwGZgB9aymGOL+owmeN+Wnp4uzz03S4ypIYBUBBkPcrFSJZFJk0QuXbI7RK/hSyNjvaDq3QpL8MZ63fWMMQaoLCJnjTFBwAZgsIh84+gzkZGRsnXrVrfEo9xrx44d/O1vMezebf157wBmAPvL96D6vGnc9HCYrfGp0hk92mp5MGqU1XJCeQ9jTJKIRBb0mtt60WSeXM5m/hqU+XDP2UTZ5uzZswwbNow2bdqwe/c31AXeB/6vXj2uWbaMiis/YsNPmtw9zZX9eUram0d5AUdDe1c8gEDgO+AsMNHBewYAW4GtoaGh7vkOo9xi2bJlUr9+fQHEgAwCORkQIDJsmMiZM3aH53aFlVkKem3AAOtR0PtdzVW1c63Bez/svsgK1ADWAuGFva8kNXh/7M/i7Q4ePCg9evTIvojaBmQLiLRvL7Jjh9v37y1/88KSX0GvVasmUr2655KlK2rnvnStoKyyPcFbMfASMKyw9xQ3wftqh0VfdenSJZk0aZIEBwcLIFVB3gRJq1FDZPZskfR0t8dQ0N88aEywvLgg99/cU0mosCRa0GuevmCp7QT8ny0JHqgF1Mj8dyVgPdC9sM8UN8E7WuXIm9Yk9Rdff/21NG/ePHvU3hvkZ5D/3dNB5PffPRaHo795wHNhtpURCkuiBb3mqaSrs1/KhsISvDsX/KgLrDXG7AS2AJ+LyHJX7uDwqcPFel4V34kTJxgwYAA333wzycnJNAT+DxgbAtH9oPmN20j8/XOPxePobyvVDtO7tzXbI2uBEU8scFHYBciCXvPUBcviLrSi/FM5d21YRHYCEe7aPlir+hw6dajA51XpiAjvvfcew4YN4+jRowQBw4HnAmFyJ7j3JrhUDkhNYeTqkUQ3j/ZIXIX9zR+N/Wsqn6eSe86TSefOf/0O+V/r2ROMgaVL87/f1fEWtrqUruxUdvj0kn3xUfEEBwXnei44KJj4qHibIvIPe/fupUuXLvTr14+jR4/SCetutQ7XQNs4eKVjZnLP5MlvTI7+5tF14j0+la+wJFrQa336wEMPeWZJv+HD8yfyzp2t51XZ4bYbnUqiJDc6JSYnMnL1SA6fOkxo9VDio+I9Npr0N+fPn+eVV15h4sSJpKamUhOYDPStUwczbRoNjgzj0On8yTysehgHhxz0WJx5/+bRdeKZPSg6O6HmHVkr5c8Ku9HJ5xO8co3PPvuMgQMHcuDAAQCeBF41hpBBg6y6R7VqJCYnMuCTAaSkpmR/LjgomNn3zLb1pDppErRtmzuZr11rjYx1xKr8nSZ45dAvv/zCc889x/vvvw9AOPA2cHNkJLz9NrRpk+v9+o1JKe+iCV7lk56ezsyZMxk5ciSnT58mGBgDDKlalaAJEyAmBgIDbY5SKVUUW3rRqNJLTE6kwdQGBIwNoMHUBiQmJ7pku0lJSdxwww0MGjSI06dPcw+wG3i+Tx+C9u2DuDhN7kr5AbdNk1Slk7fefejUIQZ8MgCgxCWR06dPM2rUKKZPn05GRgb1gDeBexs2xMycCbff7qLolVLeQEfwXmrk6pG5LmYCpGTOOS8uEeGDDz6gcePGTJs2DZORwf8D9gQF0XP0aMz332tyV8oP6QjeS7nqLt0DBw4QFxfHypUrAbgR6yJqyy5d4K23oFGjUkaqlPJWOoL3Uo7uxnX2Lt1Lly7xyiuv0KxZM1auXEkNrMT+da1atExIgC++cJjcXdlLXCllH03wXqo0d+muW7eOVq1aMXLkSC5cuEA0sBd4OiaGgH37IDraumfegbZtc/ctybpxqG3bUhyQUsrjNMF7qejm0cy+ZzZh1cMwGMKqhxV5Q9HRo0fp378/t956K3v27OF64AsgoWVLrti0ybqH/7LLitx31i30djTvspt+e1F+xVGbSTseuuh2yaSnp8u//vUvueyyywSQCiBjQS4EB4tMniySmlqi7ZbFXuK6gpHyNXjDgh/OPDTBF19ycrLcfPPN2X3au4LsB5FevUQOHy7xdstyL/GyfOzK92iC90Nnz56V4cOHS7ly5QSQK0D+A5IRGiryySel2rY/jWJLuuRcWfz2onxTYQlea/A+aPny5TRr1oxJkyaRnpbGQGBvYCAPv/ACZvdu6N69VNsvrA2urynJBWNPLcqhlNs5yvx2PHQEX7jDhw/Lfffdl12OaQXyLYh06CCSnGx3eF6rOCUXf/r2osoGdATv29LS0pgyZQpNmjRh6dKlVAFeB7Zcdhnt3nkH1q2D8HC7w/RanTtDbOZqT7Gxhc8G8qdvL0ppN0kv9+233/L000+zY8cOAO4HpgL1HnvMmrtXs6ad4fmErLJMbKxVcikrUz5V2aDdJH3Qn3/+SWxsLO3bt2fHjh00AJYDi5s2pd66dfDvf2tyd0JxFp/WOfDK32iC9zIiQmJiIo0bN+btt98mUIS/A7sqVuTuCRNg+3bo2NHuMH1GcUouegev8juOivN2PMr6RdZ9+/ZJVFRU9kXUDiDfg8hdd4kcOGBrbCWdbuhrdA688jXoRVbvduHCBcaMGUPz5s1ZvXo1IcC/gXVXXkmzJUtg+XK4+mpbYywro9viXJBVyus5yvx2PMriCH7VqlVy7bXXZo/aHwM5aozI0KEip0/bHV4uZWF0WxaOUfkX9E5W7/Prr7/Kww8/nJ3Ym4KsA5F27US2bbM7PIf8+Q5PnQOvfFFhCd5tJRpjTH1jzFpjzB5jzC5jzGB37cuXZC123bhxYxYsWEAlYAKwvVo1Os6cCRs3QkSE3WEWyN/v8NQ58MrvOMr8pX0AdYHWmf+uCuwHmhb2GX8fwW/btk3atWuXPWrvBnIARKKjRX791e7wCqWjW6W8E3aM4EXkVxHZlvnvM8Ae4Cp37c+bnTlzhueee47IyEg2b97MlcBi4NNrr+XqL76AhASoU8fuMAulo1ulfI9H7mQ1xjQAvgLCReR0ntcGAAMAQkND2xw6dMjt8XiKiLB06VKeffZZfv75ZwKAZ4Gx5ctTbeRIGD4cKla0O0yllA8r7E5Wty+6bYypAiwBhuRN7gAiMhuYDVarAnfH4ykHDx7kmWee4dNPPwWgLTALiOja1Vrs+rrrbI1PKeX/3DoP3hgThJXcE0XkQ3fuy1ukpqYyceJEmjZtyqeffko1YAawqXZtIhYsgFWrNLkrpTzCbSN4Y4wB3gH2iMgUd+3Hm6xfv57Y2Fh27doFQB9gClA3Lg7Gj4caNewMTylVxrhzBH8z0BfoYoz5LvNxlxv3Z5tjx47xxBNP0LFjR3bt2sU1wGfAgogI6m7eDNOna3JXSnmc20bwIrIBMO7avjcQEebPn8+wYcM4fvw45YG/AyOqVKHi+PEQFwfl3H6ZQymlCqTZp4R2795NbGwsX331FQBdgLeARg8+CK+/DleVyRmhSikvos3GiiklJYUXX3yRli1b8tVXX1ELeA/4okEDGq1YYU0O1+TuF7Q/vPJ1muCLYcWKFTRr1owJEyaQlpbG08C+cuV45MUXMbt2QbdudoeoXKisdNBU/ktLNE74+eefGTJkCIsXLwagBfA20L5jR6spS9Omtsan3CPrbl1d7k/5Kh3BFyItLY033niDxo0bs3jxYioD/wSSQkJoP28efPmlJnc/p/3hlS/TBO/Ali1buOGGGxgyZAhnz56lJ7Ab+H9PPUW5ffugXz8wfj1JSOH/HTSVf9MEn8epU6d45plnuOGGG9i2bRv1gY+ApeHhhG7YALNnQ0iI3WEqDyjOgt1KeSNN8JlEhIULF9K4cWNmzJhBgAjPA7srVaLHpEmwbRvcfLPdYSoP0g6aytd5pJuksyIjI2Xr1q0e3+9///tf4uLiWLVqFQA3YV1Ebd6jB0ybBmFhHo9JKaWcUVg3yTI9gr948SIvv/wy4eHhrFq1isuAfwHr69Wj+bJl8NFHmtyVUj6rzCb4NWvW0KJFC0aPHs3Fixd5FNgbEMCTw4YRsGcP3Huv3SFm0xtulFIlUeYS/B9//EHfvn2Jiopi//79NALWAPPbt6f29u3w2mtQpYrdYeaiN9wopUqizCT4jIwMZs+eTaNGjUhISKAiMB7YUaMGnWfPhg0boEULu8MsUM4bbkaP/mtmh87JVkoVpkzcybpjxw5iY2PZtGkTALdjNQa75tFHrRF77dq2xueMnDfcjBqlyV0pVTS/HsGfPXuWYcOG0aZNGzZt2kQd4H1g5fXXc82aNTB/vk8kd9AbbpRSxee3I/iPPvqIQYMG8dNPP2GAQcDLFSpQfdQoGDYMKlSwO0Sn5bzhpnNn66FlGqVUUfxuBH/o0CHuvfdeevbsyU8//URrYDMw7Y47qL5rF4wc6VPJHfSGG6VUyfjNjU6pqalMnTqVMWPGkJKSQlUgHhhYpw6B06bBAw9o7xillN8p7EYnvyjRbNy4kZiYGJKTkwF4EJhqDFcOGmRdlaxWzd4AlVLKBj6f4BctWsRDDz0EwNXADKBbZCS8/Ta0aWNrbEopZSefr8F3A642hpHArqpV6TZ9OnzzjSZ3pVSZ5/Mj+KqdOrGnWjUqdOsGU6ZA3bp2h6SUUl7B5xM8V1xBhT17NLErpVQePl+iATS5K6VUAfwjwSullMrHbQneGPNvY8wfxpjv3bUPpZRSjrlzBD8PuNON21dKKVUItyV4EfkKOOGu7SullCqc7TV4Y8wAY8xWY8zWo0eP2h2OUkr5DdsTvIjMFpFIEYmsVauW3eEopZTfsD3BK6WUcg+vutEpKSnpmDHmkN1xZKoJHLM7CBfzt2Pyt+MBPSZf4U3HFOboBbe1CzbGLABuxfoP8Tvwkoi845aduYExZqujFpy+yt+Oyd+OB/SYfIWvHJPbRvAi8rC7tq2UUqpoWoNXSik/pQnesdl2B+AG/nZM/nY8oMfkK3zimLxqyT6llFKuoyN4pZTyU5rg8/C3JmnGmPrGmLXGmD3GmF3GmMF2x1RaxpiKxpjNxpgdmcc01u6YXMEYE2iM2W6MWW53LK5gjDlojEk2xnxnjNlqdzyuYIypYYxZbIzZm/n/qfZ2x1QYLdHkYYzpCJwF3hWRcLvjKS1jTF2grohsM8ZUBZKAniKy2+bQSswYY4DKInLWGBMEbAAGi8g3NodWKsaY54BIoJqIdLc7ntIyxhwEIkXEW+aLl5oxZj6wXkTmGGPKA8EictLmsBzSEXwe/tYkTUR+FZFtmf8+A+wBrrI3qtIRy9nMX4MyHz49UjHG1APuBubYHYsqmDGmGtAReAdARC55c3IHTfBlijGmARABfGtzKKWWWc74DvgD+FxEfP2YpgLDgQyb43AlAVYZY5KMMQPsDsYFGgJHgbmZpbQ5xpjKdgdVGE3wZYQxpgqwBBgiIqftjqe0RCRdRFoB9YB2xhifLacZY7oDf4hIkt2xuNjNItIa6AbEZZY/fVk5oDUwU0QigHPA3+0NqXCa4MuAzDr1EiBRRD60Ox5XyvyK/CW+vbjMzUCPzJr1QqCLMSbB3pBKT0R+yfz5B7AUaGdvRKV2BDiS49viYqyE77U0wfu5zAuS7wB7RGSK3fG4gjGmljGmRua/KwFdgb22BlUKIjJCROqJSAOgD7BGRB6xOaxSMcZUzryoT2YZ43bAp2emichvwE/GmEaZT0UBXj1Zwau6SXqDnE3SjDFH8LEmaQW4GegLJGfWrAFeFJEV9oVUanWB+caYQKxByiIR8YuphX7kCmCpNb6gHPAfEVlpb0guMQhIzJxBcwB4zOZ4CqXTJJVSyk9piUYppfyUJnillPJTmuCVUspPaYJXSik/pQleKaX8lCZ4pZxgjFlpjDnpL50eVdmgCV4p57yGdT+BUj5DE7xSORhj2hpjdmb2nK+c2W8+XERWA2fsjk+p4tA7WZXKQUS2GGM+BsYDlYAEEfHpW+xV2aUJXqn8xgFbgAvAszbHolSJaYlGqfwuB6oAVYGKNseiVIlpglcqv9nAKCARmGhzLEqVmJZolMrBGPMokCYi/8nsVrnRGNMFGAs0Bqpkdhl9QkQ+szNWpYqi3SSVUspPaYlGKaX8lCZ4pZTyU5rglVLKT2mCV0opP6UJXiml/JQmeKWU8lOa4JVSyk9pgldKKT/1/wG2fZYX8fJ1bQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Train logistic regression\n",
    "x_train, y_train = util.load_dataset(ds2_training_set_path, add_intercept=True)\n",
    "log_reg = LogisticRegression()\n",
    "log_reg.fit(x_train, y_train)\n",
    "\n",
    "# Train GDA\n",
    "x_train, y_train = util.load_dataset(ds2_training_set_path)\n",
    "gda = GDA()\n",
    "gda.fit(x_train, y_train)\n",
    "\n",
    "# Plot decision boundaries on training set 2\n",
    "plot(x_train, y_train, theta_1=log_reg.theta, legend_1='logistic regression', theta_2=gda.theta, legend_2='GDA', title='Training Set 2')\n",
    "\n",
    "# Plot decision boundaries on validation set 2\n",
    "x_valid, y_valid = util.load_dataset(ds2_valid_set_path)\n",
    "plot(x_valid, y_valid, theta_1=log_reg.theta, legend_1='logistic regression', theta_2=gda.theta, legend_2='GDA', title='Validation Set 2')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "For dataset 2, logistic regression and GDA have same performance."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### (g)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "GDA performs poorly on dataset 1 but OK on dataset 2. The reason is that GDA assumes $p(x \\ \\vert \\ y)$ is Gaussian, whereas dataset 1 is non-Gaussian.\n",
    "\n",
    "Take a look at dataset 1, we find that all the $x_2$'s are non-negative. Take the logarithm of $x_2$ and train the classifiers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% code\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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71UrgU9KSmLTpk2hHoZGo9HUGIQQuZ7e0xaNRqPR1FK0wGs0Gk0tRQu8RqPR1FKqlQfvjqKiIn7//XdOnjwZ6qFoqoioqCiaN2+O1WoN9VA0mhpNtRf433//nbp165KUlIQQItTD0QQZKSUHDx7k999/56yzzgr1cDSaGk21t2hOnjxJfHy8FvdTBCEE8fHx+o5NowkA1V7gAS3upxj676051SgsLAzKcWuEwGs0Gk1tZP/+/aSkpDBo0CCklAE/vhZ4H6hTp06F97399tvZuXOnx/dfffVV9u7d6/P21Z2VK1fy5JNPhnoYGk21RkrJ4sWLadmyJa+//joffvghP//8c8DPU+0nWWs68+fP9/r+q6++SuvWrWnWrJlP23uiuLiY8PDK/TltNhthYWGVOka/fv3o169fpY6h0dRm/vjjD0aPHs27774LQPIFF/BSr16cc+65AT+XjuD9QErJAw88QOvWrWnTpg1vvvkmAHa7nTFjxtCqVSv69OlDr169ePvttwG46qqr2LRpEzabjVtvvbV032eeeYa3336bTZs2kZKSQvv27cnPzy/dHuD999+nY8eOtGvXju7du5cZz6uvvsqNN95I3759ufbaazlx4gQjRoygS5cudOjQgRUrVgCQl5fHoEGDaNu2LYMHD6Zr166l56hTpw6TJk2ia9eufPnll2RmZnLRRRfRvn177rzzTmw2m9uxA8yZM4eWLVvStm1bhgwZUjqmu+++G4Dc3Fy6d+9O27Zt6d69O3v27AHg1ltv5d577+WSSy7h7LPPLv2uNJrajJSSl156iZYtW/Luu+9Sr04dMs47j3W7dnHOnDmwe3dwTlpdHp06dZKu7Ny50/EEgvMoh9jYWCmllG+//bbs0aOHLC4uln/99Zc888wz5d69e+Vbb70le/bsKW02m/zzzz9l/fr15VtvvSWllPLKK6+UGzdulJs2bZI9evQoPeY///zj9L6B8Xzfvn2yefPm8pdffpFSSnnw4MEy41qwYIE844wzSt+bMGGCXLRoUenxzzvvPHn8+HH59NNPy5EjR0oppdyxY4cMCwsrPScg33zzzdLvuk+fPrKwsFBKKeXo0aPlwoULPY799NNPlydPnnR6bcGCBfKuu+6SUkrZp08f+eqrr0oppXz55Zfl9ddfL6WUctiwYfL//u//pM1mk99//70855xzynw2p7+7RlPD2b17t0xOTpaABGTfCy+Uv0dEKP1p3FjKJUuktNsrdGxgk/SgqTqC94MNGzZw0003ERYWRpMmTbjyyivZuHEjGzZs4MYbb8RisdC0aVOSk5PL7Hv22Wfzyy+/cM899/D+++9Tr149r+f66quvuOKKK0pzwU877TS3211zzTWl73344Yc8+eSTtG/fnquuuoqTJ0+yZ88eNmzYUBpht27dmrZt25buHxYWxg033ADAunXr2Lx5M126dKF9+/asW7eOX375xePY27ZtS0pKCpmZmW7toS+//JKbb74ZgNTUVDZs2FD6Xv/+/bFYLLRs2ZK///7b63eh0dRUbDYbs2bNok2bNmRnZ9Owfn3eOPNMVvz4I2cUFsKIEfDDD3DjjRCE7LGa5cEHYZbZv9O7P7+n1800aNCAbdu28cEHH/D888+zZMkSXnnlFa/n8iVdMDY21mmfd955hwsuuMDn8UVFRZX67lJKhg0bxrRp08ps527s7733Hp9++ikrV65k6tSpfP/9917Hav48kZGRPo1Po6mpfPfdd9x222188803ANx8wQXM3rWLhocPwznnwIsvghvrNZDoCN4PrrjiCt58801sNhv79+/n008/5aKLLuKyyy7jnXfewW638/fff/Pxxx+X2ffAgQPY7XZuuOEGpk6dypYtWwCoW7cux44dK7N9t27d+OSTT/j1118BOHToULnj+9e//sVzzz1XKphbt24F4LLLLmPJkiUA7Ny5kx07drjdv3v37rz99tvs27ev9Jy5ublux2632/ntt99ITk5m+vTpHD58mOPHjzsd75JLLmHx4sUAZGVlcdlll5X7GTSamk5hYSGPPfYYHTt25JtvvuGM+HjebdSIrF27aBgWBg8+CNu3B13coaZF8CFmwIABfPnll7Rr1w4hBNOnT6dp06bccMMNrFu3jtatW3P++efTtWtX4uLinPb9448/GD58OHa7HaA0Sr711lsZNWoU0dHRfPnll6XbN2rUiIyMDAYOHIjdbqdx48Z89NFHXsc3ceJE7rvvPtq2bYuUkqSkJFatWsWYMWMYNmwYbdu2pUOHDrRt27bM+ABatmzJ448/zrXXXovdbsdqtfL8888THR1dZuw2m42hQ4dy5MgRpJT8+9//pn79+k7HmzNnDiNGjODpp5+mUaNGLFiwwO/vXKOpSWzcuJERI0bw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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEjCAYAAAA41BqSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABBQUlEQVR4nO3dd3gU5fbA8e+bEEooQbqKSZCmlEjniojGIIqCYi/IFVGxYEMFRXqTZkGuiKIIXokIoiiiIkrRiz8UQm+CggTpEgWBEEiy5/fHbOJC2ibZ2dndnM/z7EN2d3bm7CSceefMO+9rRASllFKhJ8zpAJRSStlDE7xSSoUoTfBKKRWiNMErpVSI0gSvlFIhShO8UkqFKE3wqsiMMTWNMd8bY44ZY152Oh5PxphYY4wYY0rZsG4xxtRz//ymMWawN8sWYTvdjTGLihqnUprgg5Qx5rjHw2WMOenxvLufwugNHAYqicgzftpmsRljvjbGjMjl9RuNMQcKc1AQkYdFZKQPYspxQBKRRBHpVNx157G9F4wxv7n/XvYYY2Z7+bmexpjlBSxzuzHm/4wxqcaYZT4JWBWJJvggJSIVsh7AbqCrx2uJWcvZ0YL1EANskSLcLWdzXAWZAfQwxpizXu8BJIpIhv9D8h9jzL1Y37Wj+++nFbDYh5v4E5gIjPXhOlVRiIg+gvwB7ML6zwpwJbAHeA44ALwPnAMsAP4A/nL/XNvj88uAkcAPwDFgEVDN/V5ZYCaQAhwBVgE1sZJkOnAaOA50BMpg/cfe535MBMrkE9cw4CP3+o8BG4EGwADgEPA70MkjzihgGrAf2AuMAsLd74UDL2GdUewE+gAClMplf5UDjgIdPF47B0gDLgHaACvc33c/8DpQ2mNZAeq5f54BjPJ4r5/7M/uAXmctez2wFvjb/d2GeXxut3vZ4+7HpUBPYLnHMu3c+/+o+9923vwOc/n+rwMT8/l7ynU/Axe791GmO8YjBfxdPgAsc/r/R0l+aAs+NNUCqmC1sHtjnalNdz+PBk5i/Sf3dDdwH1ADKA086379Xqz/8BcAVYGHgZMi0hNIBMaLddbwLTAQ+BfQjH8S5aB84gLoyj8HobXA1+54zwdGAG95fP49IAOoBzQHOmElEYAHgS7u11sBt+a1c0TkJDAH+LfHy7cDP4vIeqwE1heohpVoE4BH81pfFmPMtVj77WqgPtZBz9MJ9zYrYyX7R4wx3dzvdXD/W9m9P1ecte4qwBfAJKzfwyvAF8aYqh6L5fU7PNuPwL+NMf2MMa2MMeFnvZ/rfhaRrVi//xXuGCvnvTdUQHD6CKOP4j/I2YI/DZTNZ/lmwF8ez5cBgzyePwosdP/cC/g/IC6X9czgzNbrDuA6j+fXALvyigurBf+Nx/OuWC3DrFZ5RaxWbWWss4ZTQDmP5e8Clrp/XgI87PFeJ/Jowbvfb4/VEi7nfv4D0DePZZ8C5nk8z7UFD7wLjPVYroHnsrmsdyLwqvvn2LPjxaMFj1VSWXnW51cAPQv6Heax7e7At1gHnRTgeffrBe3n7Ji8+LvUFrzDDyfroMo+f4hIWtYTY0wk8CpwLVZLGaCiMSZcRDLdzw94fD4VqOD++X2s1vuHxpjKWOWUgSKSnst2zwOSPZ4nu1/LNS63gx4/nwQOe8R00v1vBfd6IoD9HqXzMKxSR9a2s37O2naeRGS5MeYP4EZjzEqgNXAzgDGmAVYLuRUQCZQCVue3Po8YPJc7IwZjTFusunQTrBZ2GawSlTfO3rdZ6z/f43lev8McxLpOk2iMiQC6uX9ei1XCy28/qyCiJZrQdPZFz2eAhkBbEanEP+WAsy8y5lyRSLqIDBeRRlg14C6cWdrwtA+r/JIl2v1aXnEVxu9YLctqIlLZ/agkIo3d7+/HOhB5brsg/8X6Lj2ARSKSdbCZAvwM1HfvrxfwYl95EcMHwHzgAhGJAt70WG9B++bsfZu1/r1exJUn9+/3I2AD1oGnoP2sw88GEU3wJUNFrNbwEXctd6i3HzTGxBtjmrrrtH9jXVjNzGPxWcAgY0x1Y0w1YAhWi7/YRGQ/1oXDl40xlYwxYcaYusaYK9yLzAGeMMbUNsacAzzvxWr/i1UnfxCr7pylItZ3PW6MuQh4xMsw5wA9jTGN3GdNZ+/nisCfIpJmjGmDVTPP8gfgAi7MY91fAg2MMXcbY0oZY+4AGmFdMC8Ud1fH640xFd37sTPQGPjJi/18EKhtjCmdz/rDjTFlsc58wowxZd1nCsrPNMGXDBOxeo4cxrrAtrAQn60FzMVKeFuB78g7aY8CkrBagxuBNe7XfOXfWKWNLVilhLnAue733sa6QLvevd1PClqZiOzCur5QHqtlneVZrOR7zL1er/qIi8hXWPt6CfCr+19PjwIjjDHHsA5+czw+mwqMBn4wxhwxxvzrrHWnYJ09PYNVM+8PdBGRw97Edpa/sc5KdmP1FBoPPCIiWf3b89vPS4DNwAFjTF7b7oHVoJgCXO7++e0ixKmKyYjoGZdSSoUibcErpVSI0gSvlFIhShO8UkqFKE3wSikVojTBK6VUiNIEr5RSIUoTvFJKhShN8EopFaI0wSulVIjSBK+UUiFKE7xSSoUoTfBKKRWiNMErpVSI0gSvlFIhShO8UkqFKE3wSikVojTBK6VUiCrldACeqlWrJrGxsU6HoZRSQWP16tWHRaR6bu8FVIKPjY0lKSnJ6TCUUipoGGOS83pPSzRKKRWiNMErpVSI0gSvlFIhKqBq8LlJT09nz549pKWlOR2K8pOyZctSu3ZtIiIinA5FqaAW8Al+z549VKxYkdjYWIwxToejbCYipKSksGfPHurUqeN0OEoFtYAv0aSlpVG1alVN7iWEMYaqVavqGZsqERI3JhI7MZaw4WHETowlcWOiT9cf8C14QJN7CaO/b1USJG5MpPfnvUlNTwUg+WgyvT/vDUD3pt19so2Ab8ErpVQoGrh4YHZyz5KansrAxQN9tg1N8F6oUKFCkT/7wAMPsGXLljzfnzFjBvv27fN6+UA3f/58xo4d63QYSgW83Ud3F+r1ogiKEk0we+edd/J9f8aMGTRp0oTzzjvPq+XzkpGRQalSxft1ZmZmEh4eXqx13HDDDdxwww3FWodSJUF0VDTJR3PehBodFe2zbWgLvhBEhH79+tGkSROaNm3K7NmzAXC5XDz66KM0btyYLl26cN111zF37lwArrzySpKSksjMzKRnz57Zn3311VeZO3cuSUlJdO/enWbNmnHy5Mns5QEWLlxIixYtuOSSS0hISMgRz4wZM7jtttvo2rUrnTp14sSJE/Tq1YvWrVvTvHlzPvvsMwBSU1O5/fbbiYuL44477qBt27bZ26hQoQJDhgyhbdu2rFixgpkzZ9KmTRuaNWvGQw89RGZmZq6xA0yaNIlGjRoRFxfHnXfemR3TY489BkBycjIJCQnExcWRkJDA7t1Wy6Rnz5488cQTtGvXjgsvvDB7XylVkoxOGE1kROQZr0VGRDI6YbTvNiIiAfNo2bKlnG3Lli3/PAF7HgUoX768iIjMnTtXOnbsKBkZGXLgwAG54IILZN++ffLRRx9J586dJTMzU/bv3y+VK1eWjz76SERErrjiClm1apUkJSVJx44ds9f5119/nfF+lqznhw4dktq1a8vOnTtFRCQlJSVHXNOnT5fzzz8/+70BAwbI+++/n73++vXry/Hjx2XChAnSu3dvERHZuHGjhIeHZ28TkNmzZ2fv6y5dusjp06dFROSRRx6R9957L8/Yzz33XElLSzvjtenTp0ufPn1ERKRLly4yY8YMERGZNm2a3HjjjSIicu+998qtt94qmZmZsnnzZqlbt26O73bG712pEDVzw0yJeTVGzDAjMa/GyMwNMwu9DiBJ8sipWqIphOXLl3PXXXcRHh5OzZo1ueKKK1i1ahXLly/ntttuIywsjFq1ahEfH5/jsxdeeCE7d+7k8ccf5/rrr6dTp075buvHH3+kQ4cO2X3Bq1SpkutyV199dfZ7ixYtYv78+bz00kuA1cV09+7dLF++nCeffBKAJk2aEBcXl/358PBwbrnlFgAWL17M6tWrad26NQAnT56kRo0adO3aNdfY4+Li6N69O926daNbt245YluxYgWffPIJAD169KB///7Z73Xr1o2wsDAaNWrEwYMH890XSoWq7k27+6zHTG6CK8GLOLz53Lef1+uezjnnHNavX8/XX3/N5MmTmTNnDu+++26+2/Kmu2D58uXP+MzHH39Mw4YNvY6vbNmy2XV3EeHee+9lzJgxOZbLLfYvvviC77//nvnz5zNy5Eg2b96cb6ye36dMmTJexaeUKjrbavDGmIbGmHUej7+NMU/ZtT1/6NChA7NnzyYzM5M//viD77//njZt2tC+fXs+/vhjXC4XBw8eZNmyZTk+e/jwYVwuF7fccgsjR45kzZo1AFSsWJFjx47lWP7SSy/lu+++47fffgPgzz//LDC+a665hv/85z/ZCXPt2rUAtG/fnjlz5gCwZcsWNm7cmOvnExISmDt3LocOHcreZnJycq6xu1wufv/9d+Lj4xk/fjxHjhzh+PHjZ6yvXbt2fPjhhwAkJibSvn37Ar+DUsp3bGvBi8g2oBmAMSYc2AvMs2t7/nDTTTexYsUKLrnkEowxjB8/nlq1anHLLbewePFimjRpQoMGDWjbti1RUVFnfHbv3r3cd999uFwugOxWcs+ePXn44YcpV64cK1asyF6+evXqTJ06lZtvvhmXy0WNGjX45ptv8o1v8ODBPPXUU8TFxSEixMbGsmDBAh59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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_train, y_train = util.load_dataset(ds1_training_set_path)\n",
    "x_valid, y_valid = util.load_dataset(ds1_valid_set_path)\n",
    "transformed_x_train = np.stack((x_train[:,0], np.log(x_train[:,1])), axis=1)\n",
    "transformed_x_valid = np.stack((x_valid[:,0], np.log(x_valid[:,1])), axis=1)\n",
    "\n",
    "# Train logistic regression\n",
    "transformed_x_train_with_intercept = util.add_intercept(transformed_x_train)\n",
    "log_reg = LogisticRegression()\n",
    "log_reg.fit(transformed_x_train_with_intercept, y_train)\n",
    "\n",
    "# Train GDA\n",
    "gda = GDA()\n",
    "gda.fit(transformed_x_train, y_train)\n",
    "\n",
    "# Plot decision boundaries on training set 1\n",
    "plot(transformed_x_train, y_train, theta_1=log_reg.theta, legend_1='logistic regression', theta_2=gda.theta, legend_2='GDA', title='Transformed Training Set 1')\n",
    "\n",
    "# Plot decision boundaries on validation set 1\n",
    "plot(transformed_x_valid, y_valid, theta_1=log_reg.theta, legend_1='logistic regression', theta_2=gda.theta, legend_2='GDA', title='Transformed Validation Set 1')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "Now we can see that logistic regression and GDA have pretty much the same performance on dataset 1."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "cs229",
   "language": "python",
   "name": "cs229"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
